Janea Taylor – COMPUTERS ARE FUN!


Intro to Development – Authentication
July 27, 2006, 2:32 am
Filed under: Development, Intro, Security

In computing and security, authentication is a term used to describe the process of identifying someone or something by comparing them to whom or what they are supposed to be. One of the most common authentication processes includes providing a password or other login information (Whatis.com – Authentication, 2006). Authentication should not be confused with authorization. The latter is a term used to describe which permissions are assigned to a person or thing. For example, someone must be given authorization to access certain resources. Then the process used to identify the person as being who they claim to be would be accomplished by some form of authentication (Whatis.com – Authorization, 2006).

There are also more advanced techniques of authenticating someone’s identity, such as biometric technologies, which are able to authenticate a person’s identity by scanning some unique biological characteristic, such as fingerprints or eye retinas. A common form of authentication used for Internet transactions utilizes digital certificates, which are provided by a Certificate Authority. Digital certificates and Certificate Authorities (CA) are components of a larger system known as a public key infrastructure (PKI). Using an algorithm, a CA creates a private key and then issues public keys through digital certificates. For transmission to occur, data is encrypted using a cryptography method. Public keys can be distributed and used for authenticating an objects identity, such as a computer or person. The public key must be compared against the private key and they must match in order for something to be authenticated. Once an object is authenticated, the data can be decrypted (Whatis.com – PKI, 2006).

There are several built-in authentication options available in ASP.NET. Custom authentication methods can be developed as well. Some of the built-in methods supported by ASP.NET include Form-based authentication and Passport authentication. Integrated Windows authentication is a common method, which uses Windows credentials to verify a user’s identity. Windows authentication is flexible and easy to implement. It is not necessary to hard-code anything because IIS controls the authentication process (ASP 101 – Security Features in ASP.NET, 2006).

Resources:

Whatis.com – Authentication. (2006). Retrieved July 27, 2006 from http://searchsecurity.techtarget.com/sDefinition/0,,sid14_gci211621,00.html

Whatis.com – Authorization. (2006). Retrieved July 27, 2006 from http://searchappsecurity.techtarget.com/sDefinition/0,,sid92_gci211622,00.html

Whatis.com – PKI. (2006). Retrieved July 27, 2006 from http://searchsecurity.techtarget.com/sDefinition/0,,sid14_gci214299,00.html

ASP 101 – Security Features in ASP.NET. (2006). Retrieved July 27, 2006 from http://www.asp101.com/articles/cynthia/authentication/default.asp



Intro to Development – Testing & Debugging
April 17, 2006, 3:35 am
Filed under: Development, Intro

Debugging an application involves finding bugs in a piece of software’s code and eliminating them (http://en.wikipedia.org/wiki/Debugging, 2006). A bug is something that causes an application to run improperly or crash when given circumstances are present. Testing is the process used to identify bugs within an application (http://en.wikipedia.org/wiki/Software_testing, 2006). When testing an application, several test cases should be used so that as many bugs as possible are identified (http://en.wikipedia.org/wiki/Test_Case, 2006). This reduces the possibility that the software will generate errors or crash when it is used.

From my experience with testing and debugging software, I would have to say that no matter how simple a program is, you can not necessarily guarantee that all bugs will be discovered during the testing phase. One example might be that of Microsoft’s notoriously buggy software such as Internet Explorer or even Windows (http://www.networkworld.com/news/2005/041105-windows-crash.html, 2006). Certainly a company such as Microsoft would employ as many tactics as possible to uncover all bugs in their own software before releasing it to the public, however every time they release new software, users begin discovering bugs almost immediately. This would indicate to me that even the most seasoned developers have a hard time finding all of the bugs in their software.

Resources:

Wikipedia – Debugging. Retrieved April 17, 2006 from http://en.wikipedia.org/wiki/Debugging

Wikipedia – Software Testing. Retrieved April 17, 2006 from http://en.wikipedia.org/wiki/Software_testing

Wikipedia – Test Case. Retrieved April 17, 2006 from http://en.wikipedia.org/wiki/Test_Case

How to Solve Windows Systems Crashes in Minutes. Retrieved April 17, 2006 from http://www.networkworld.com/news/2005/041105-windows-crash.html



Intro to Development – Arrays
April 5, 2006, 2:28 am
Filed under: Development, Intro

It is never required that you use arrays when programming, however, arrays are useful in that they can significantly reduce the amount of code you must write when working with multiple variables that contain related data. This then reduces the amount of time you must spend writing code (www.sheridanc.on.ca, 2006). The components of a one-dimensional array include the array name, the index, and the data type. A one-dimensional array works by assigning a name to the array, specifying how many elements the array will contain by using an index number and declaring the data type of the array. All elements in an array must be of the same data type. Variables within an array are initialized by assigning values to the elements using the array name and variable index. In VB.NET, array indexes are always zero-based, meaning they always start at 0. Therefore, when referencing an index number, it will always be 1 less the variable number. For instance, the following array: Fruits(4) would represent a one-dimensional array named Fruits that contains 5 elements, from 0 to 4. The third element in the array would be referenced as variable(2).

It is possible to create fixed-size arrays and dynamic arrays within VB.NET. An array is created by using the Dim or Public keyword depending on its scope. To declare a fixed-size array in an event procedure, you would type: Dim ArrayName(x) As DataType where ArrayName is the name, x is the number of elements minus 1, and DataType is the data type of all of the elements. An example would be: Dim Fruits(5) As String. The Fruits array will contain 6 elements of the string data type. In the event where the number of elements is unknown, a dynamic array should be used (en.wikipedia.org, 2006). A dynamic array is declared within an event procedure in VB.NET by typing: Dim ArrayName() As DataType. The only difference in declaring a dynamic array versus a fixed-size array is that you do not specify the number of elements in the declaration. Instead, you ReDim the array using a variable as the index. For instance, Dim Fruits() As String would declare the dynamic array named Fruits. You would then assign a value to a variable such as TotalFruits = 1 and then type: ReDim Fruits(TotalFruits). This way, the number of elements in the array is equal to the value of the TotalFruits variable which can be changed as needed.

To create a two-dimensional array within an event procedure in VB.NET, you would type: Dim ArrayName(x, x) As DataType. The difference is that there are two numbers of elements assigned to the array instead of one. To declare a two-dimensional array that contains 5 elements by 4 elements, you would type: Dim ArrayName(4, 3) As DataType. Two-dimensional arrays are used when you have multiple variables that contain similar or related data and share common elements as well (www-ee.eng.hawaii.edu, 2006). For instance, if you have an array named StudentGrades(4, 3) you could store 5 students and 4 grades for each student using the following structure:

                Grade0, Grade1, Grade2, Grade3
Student0
Student1
Student2
Student3
Student4

Although beyond the scope of this article, it is important to note that arrays can contain more than two dimensions. Multi-dimensional arrays are used more frequently in graphics programming (en.wikipedia.org, 2006).

Resources:

Why Are Arrays Useful? Retrieved April 5, 2006 from http://www.sheridanc.on.ca/~jollymor/logic/sess8.html

Wikipedia – Array. Retrieved April 5, 2006 from http://en.wikipedia.org/wiki/Array

Two Dimensional Arrays. Retrieved April 5, 2006 from http://www-ee.eng.hawaii.edu/~tep/EE160/Book/chap9/section2.1.1.html



Intro to Development – Loops
April 1, 2006, 3:07 am
Filed under: Development, Intro

A For Next loop is beneficial in that it combines several actions into one statement, thereby consolidating code and making it easier to identify its components. Using the For Next loop format allows a programmer to create and initialize a counter variable, set a value range, increment or decrement the value and execute the next step in a loop process (Gambas-Loop, 2006). One of the disadvantages to using For Next loops is that they are less flexible than other looping methods because you must know how many times the loop will be executed. Also, sometimes For Loops can be difficult to read and understand (Object Oriented Software Engineering Knowledge Base, 2006). A situation where you might use a For Next loop would be if you were to display a list of numbers or letters such as 1 through 100 or A through Z. You would specify a variable range, increment the value of the counter variable and loop through each element from the beginning of the range to the end of the range (The FOR Statement, 2006).

For example:

for x = 1 to 100

show x

x = x + 1

      next

 

All of the information I have run across seems to indicate that there are no true advantages or disadvantages to using a Do While vs. a Do Until loop. Both types of loops perform essentially the same action. The main thing to keep in mind when choosing a Do loop type is code clarity. You should use whichever loop type makes the code and logic easiest to read and understand (The Do Until Loop, 2006). There can be advantages to using a Do loop over a For loop in that they can be executed an unknown number of times. So, if you are unsure as to how many times a loop should run, you would definitely use a Do loop. Also, many times Do loops aren’t as difficult to understand as For Loops because the code is split up into separate components.

The main difference between a Do While loop and Do Until loop is that a Do While loop is used when the statements in a loop must be executed at least once. In a Do While loop, all of the statements will be continuously executed as long as a certain condition is true. As soon as the condition is false, the loop exits (Two Loops & Flow Charting, 2006). It is important to remember that when using a Do While loop, the condition is tested at the bottom of the loop. In a Do Until loop however, the condition is tested at the top of the loop and should be used when a condition must be tested before the loop executes. If the condition is false, all of the statements will be continuously executed as long as a certain condition remains false. In this case, as soon as the condition is true, the loop exits (Two Loops & Flow Charting, 2006).

Here are examples of a Do While and a Do Until loop:

While x is less than 100, add 1 to x.

Do While x < 100

    x = x + 1

End

Until x is more than 100, add 1 to x

Do Until x > 100

    x = x + 1

End

Note: The only difference in the code is that the operator changes from < to >.

 

References:

Gambas-Loop. Retrieved April 1, 2006 from http://en.wikibooks.org/wiki/Gambas-Loop

For Loops. Retrieved April 1, 2006 from http://www.cs.utah.edu/~hamlet/lib/lessons/uces-13/uces-13/node6.html

Object Oriented Software Engineering Knowledge Base. Retrieved April 1, 2006 from http://www.site.uottawa.ca:4321/oose/index.html#forloop

The FOR Statement. Retrieved April 1, 2006 from http://www.arjay.bc.ca/Modula-2/Text/Ch5/Ch5.4.html

Two Loops & Flow Charting, 2006. Retrieved April 1, 2006 http://www.macdonald.egate.net/CompSci/h2loops.html

The Do Until Loop. Retrieved April 4, 2006 from http://www.informit.com/library/content.asp?b=STY_VB6_24hours&seqNum=89&rl=1



Intro to Development – Interface Design
March 7, 2006, 3:02 am
Filed under: Development, Intro

I have filed my taxes online every year for the last several years. I had grown very comfortable using a certain company’s web application to do so. Unfortunately that company went out business last year. So, when I filed my taxes this year, I had to learn a whole new process.

There seems to be an over-abundance of options when it comes to online tax services. I basically just picked one randomly. Although, the one that I chose to use was a functional and effective application, the GUI left a bit to be desired. It was not very pleasing to the eye, perhaps because of a poor choice of color combinations, which made the whole experience a little distracting. The forms that I had to fill out contained several drop down boxes and text boxes, most of which were not even pertinent to my requirements. However, the ones that were “required” were clearly marked as such, which made it easier to identify the areas that I needed to fill out. This made the application rather intuitive. The interface design was very simple and did not contain any objects that were unrelated to the function of the application. This made it easier to navigate.

One thing I might suggest to the designer of the interface would be to allow users to customize the interface by manipulating the color scheme (Principles of Good GUI Design, 2006). Also, when I completed the forms that were required, I was a bit confused as to what to do next. There were a couple buttons and I clicked on the one that said “Complete”. However, there was another button labeled “File Return”. I instinctively clicked on the “Complete” button. A week later, I realized that I had never filed my return. I only completed filling out the forms. Perhaps the designer could make the end of the process a little more intuitive.

References:

Principles of Good GUI Design. Retrieved on March 7, 2006 from http://www.iie.org.mx/Monitor/v01n03/ar_ihc2.htm



Intro to Development – Object-Oriented Concepts
March 4, 2006, 3:13 am
Filed under: Development, Intro

The fundamental concepts related to object-oriented programming include the use of classes and objects, encapsulation, inheritance, abstraction, and polymorphism. Some popular object-oriented languages include C++, Java, and .NET languages such as Visual Basic .NET and C# (Object-oriented programming – Definition, 2006).

C++ is a popular object-oriented capable language that is considered to be more of a general purpose language. It is a newer variant of the C language. The C language is an older a high-level programming language still widely used today. C++ is an enhanced version of C in that it offers the same benefits as C, such as efficiency and portability but is also capable of handling classes (C Plus Plus, 2006). Some other features that C++ offers over C are namespaces, exception handling, and templates (Incompatibilities Between ISO C and ISO C++, 2006).

Although C++ is a derivative of C, programs written in C++ and C are not necessarily compatible with each other (C Programming Language – Definition, 2006). Some of the types of applications written using C++ include games, user applications, as well as operating systems (C++ Applications, 2006). C# is another derivative language of C but is based on the Microsoft .NET platform and has become a popular commercial object-oriented language (Object-oriented programming – Definition, 2006).

If I were on the development team assigned to a project that involved developing a user application, such as Microsoft Word, or Adobe Photoshop, I would most likely use an object-oriented language like C++ or C#. It seems that these languages have become the standard in the development of high-end user applications.

References:

Object-oriented programming – Definition. Retrieved on March 4, 2006 from http://en.wikipedia.org/wiki/Object-oriented_programming

C Plus Plus – Definition. Retrieved on March 4, 2006 from http://en.wikipedia.org/wiki/C_Plus_Plus

C Programming Language – Definition. Retrieved on March 4, 2006 from http://en.wikipedia.org/wiki/C_programming_language

Incompatibilities Between ISO C and ISO C++. Retrieved on March 4, 2006 from http://david.tribble.com/text/cdiffs.htm

C++ Applications. Retrieved on March 4, 2006 from http://public.research.att.com/~bs/applications.html



Intro to Development – Sorting Algorithms
February 19, 2006, 3:25 am
Filed under: Development, Intro

When I view my bank statement, I notice that my expenses are sorted in ascending order by check number. The program that lists this data would have to utilize a sorting algorithm in order to print the expenses in order by check number because there are times when checks are processed out of order. For instance, if two separate checks are mailed to different cities, it is likely that the check going to the closer city would be processed before the other, however it may contain a higher check number. If my bank statement were to print expenses in the order they were processed rather than by check number, it would make it more difficult to find a check by its number.

Initially, I chose the selection sort algorithm to describe how a program might sort the data in a bank statement by check number. After researching, I realized that selection sort may not be the best option. Selection sort works by checking the data for the smallest number and then moving it to the beginning of the data list. After checking the value of the second element, it scans the data list for the next smallest number and swaps it with the second element and moves onto the third element. This process is continued until the data has been sorted (Discussion of Sorting Algorithms, 2006). The advantage of using selection sort is that it is a simple algorithm and relatively easy to implement in comparison to other algorithms (Selection Sort, 2006). Although selection sort is more efficient and faster than the bubble sort algorithm, it is rarely used. Instead, the insertion sort method is often chosen over selection sort (Selection Sort – Definition, 2006).

The insertion sort algorithm is faster and more efficient than bubble sort and is more stable than selection sort. For this reason, the insertion sort algorithm would likely be the better choice for sorting the data in a bank statement ordered by check number (Selection Sort, 2006). Insertion sort works by checking the value of the last two data elements and comparing them then putting them in the correct order. It then moves backwards, checking each element and comparing it to the already ordered list and placing it in the correct order until all of the data is sorted (Discussion of Sorting Algorithms, 2006).

Reference:

Farrell, J. (2006). Programming Logic and Design, Fourth Edition. Thomson Course Technology

Data Structures and Algorithms. Retrieved February 19, 2006 from http://www.cs.auckland.ac.nz/software/AlgAnim/sorting.html#insert_anim

Discussion of Sorting Algorithms. Retrieved February 19, 2006 from http://atschool.eduweb.co.uk/mbaker/sorts.html

Selection Sort. Retrieved February 19, 2006 from http://linux.wku.edu/~lamonml/algor/sort/selection.html

Selection Sort – Definition. February 19, 2006 from http://en.wikipedia.org/wiki/Selection_sort



Intro to Development – Control Breaks
February 18, 2006, 2:40 am
Filed under: Development, Intro

The logic below represents a program that lists movies in a collection by their director. A new page is created for each director and the total number of movies by each director is calculated. In addition to totals by director, the program provides a grand total of movies in the collection.

In order to create a new page for each director, the program must contain a single-level control break (Farrell, 2006. pp. 265-266). To know when to create a new page, the program must be able to distinguish between the current director and a new director for each record processed. This is achieved by using a control break field (Performing Single-level Control Breaks, 2006). The control break field used in the logic below is previousDirector. During the execution of the houseKeeping() module, the value for the previousDirector field is set to be equal to the value of the movieDirector field. The value is compared to the movieDirector field for each record processed to determine if it is the same or if it has changed. If it has changed, then a new page of movies is created for a new director and the previousDirector field is updated to equal the movieDirector field. The control break field is also required to calculate the total number of movies for each director (Control Break, 2006).

Pseudo-code

start

    perform houseKeeping()

    while not eof

        perform movieListLoop()

    endwhile

    perform finishUp()

stop

houseKeeping()

    declare variables

    open files

    print heading

    read movieRec

    previousDirector = movieDirector

return

movieListLoop()

    if movieDirector not equal to previousDirector then

        perform directorChange()

    endif

    print movieTitle

    directorTotal = directorTotal + 1

    read movieRec

return

directorChange()

    print “Total movies by director”, directorTotal

    grandTotal = grandTotal + directorTotal

    directorTotal = 0

    previousDirector = movieDirector

return

finishUp()

    perform directorChange()

    print “Total number of movie titles”, grandTotal

    close files

return

 

Flowcharts

 


References

Farrell, J. (2006). Programming Logic and Design, Fourth Edition. Thomson Course Technology

Performing Single-level Control Breaks. Retrieved February 18, 2006 from http://www.ccaurora.edu/csc116z/lecture_notes/chapter_7.htm

Control Break. Retrieved February 18, 2006 from http://cs.senecac.on.ca/~tmckenna/RPG544/controlbreak.htm



Structured vs. Object-Oriented Programming
December 2, 2005, 3:30 am
Filed under: Development, Intro

There are advantages as well as disadvantages to using either structured programming languages or object-oriented languages when developing an application. One of the more popular structured programming languages is known as Pascal (Wikipedia – Structured Programming, 2005). Pascal is often used to help teach programming to students in an educational format (Wikipedia – Pascal, 2005). In general terms, a structured programming language is laid out in a series of explicit statements and does not generally contain commands which redirect the execution of statements to other areas of the program (Wikipedia – Pascal, 2005). In comparison, object-oriented languages often contain a set of reusable modular components, which can be called to execute at various points throughout the program, without having to be completely rewritten. Some of the more popular object-oriented languages include Java and C++ (Wikipedia – Object-oriented Programming, 2005).

There is an advantage to using structured programming when writing classes and complex functions are not necessary. It can take up more time and energy to develop classes rather than simply write a straightforward piece of code, which executes a specific set of commands. It depends on what the overall purpose of the program is. One of the main disadvantages to using a structured programming language versus an object-oriented language is that it is not ‘modular’. In other words, the code is not split up into reusable sections. The code is written and executed sequentially; therefore you may have redundant code. It may take longer to develop programs using structured language (What Is Object-oriented Programming?, 2000).

One of the advantages to using object-oriented programming languages is that it is modular. It is possible to write a reusable piece of code, such as a function or a class, which can be used multiple times throughout a program without having to rewrite it (Cashman, Shelly, & Vermaat, 2004, p. 405). This can save the developer much time and effort in the development process. One of the possible disadvantages to using an object-oriented programming language is its sheer complexity. It is not typically recommended to use object-oriented languages when developing smaller, less complex programs or programs that are built to run on low powered computers (What Is Object-oriented Programming?, 2000).

Considering the potential complexity of a filing system application, it would probably be recommended to use object-oriented technology. Also, being that application development using object-oriented languages can be done faster, this might save the developer’s time so that they could deliver the program to the client sooner (Cashman et al., 2004, p. 405).

References:

Cashman, T.J., Shelly, G.B, & Vermaat, M. E. (2004). Discovering Computers: Fundamentals editions. Boston: Course Technology

What Is Object-oriented Programming?. (2000). Retrieved December 2, 2005 from http://duramecho.com/ComputerInformation/WhatIsObjectOrientedProgramming.html

Wikipedia – Object-oriented Programming. (2005) Retrieved December 2, 2005 from http://en.wikipedia.org/wiki/Object-oriented_programming

Wikipedia – Pascal. (2005) Retrieved December 2, 2005 from http://en.wikipedia.org/wiki/Pascal_programming_language

Wikipedia – Structured Programming. (2005) Retrieved December 2, 2005 from http://en.wikipedia.org/wiki/Structured_programming