Summer 2002 Final ExamReview Page

CSE1320 Section 501                                                            Dr. Tiernan’s section

 

Topics to be covered on Final from last part of the semester with accompanying notes (Ch.9 - 12, and Software Engineering). The Final Exam is COMPREHENSIVE so all topics from previous review sheets are included as review topics for the Final Exam.

 

Main Topics                                                                Final Exam is 6pm-8pm Monday, August 12

Two-D and Multi-Dimensional Arrays

            Understand how C treats a 2-D array as “an array of arrays”

            Know how to access array and array elements with pointer arithmetic and array subscripts

            Know how to use the correct indexes to reach the value you want

            Know what the first two indexes represent

Double Indirection

            Understand how to declare a pointer to a pointer

            Understand what each level of dereferencing points to

Command Line Parameters

            Know what the two parameters are

            Know how to use them

            Know how C will store the parameter data

Files

            Know how to connect a physical file to a variable in your program

            Know how to indicate the way the file will be used (for reading, etc.)

Error handling with library functions

            Be able to describe why we must check for errors with library functions

            Know the error return types for at least three library functions and how you would use this information

            errno

Math functions

            Know how to use:

                        pow

                        sqrt

Linked lists

            Understand how to define a node for a linked list

            Understand the process for:

                        adding a node to a list

                        removing a node

                        changing the order of nodes

Preprocessor macros

            Know how to define

            Know limitations of

Conditional compilation

            preprocessor commands

            #DEFINE, #IFDEF, etc.

            be able to describe how conditional compilation helps in debugging and testing

C++ topics

            Default parameter values

            Construcotr and destructor functions

            Input and output

                        objects – cin, cout

                        operators - >>, <<

                        library file – iostream.h

            bool

            Passing parameters by reference

Characteristics of OOP

            Data abstraction and encapsulation

                        be able to give a general definition related to C++

                        class (extension of struct)

                        member functions and member data

                        public and private data

                        scope resolution operator

                        constructor and destructor

            Polymorphism

                        be able to give a general definition related to C++

                        operator overloading

                        function overloading

                                    understand how C++ decides which function to use (p. 670)

                        templates

            Inheritance

                        be able to give a general definition related to C++

                        base class

                        derived class

                        public inheritance

Software Engineering

            Know the phases of software development and be able to give a one sentence definition of each phase

            Be able to describe at least two types of testing that should occur in software development

            Be able to name at least three characteristics of software quality

 

 

Secondary and Related Topics

Reading in Data

            Know the syntax and parameters for the following

            Chars – getc, putc

            Strings – fgetc, fputc

            Blocks – fread, fwrite

            Formatted – fscanf, fprintf

            Random Access – fseek, ftell

C library functions

            Be able to describe the benefits of having an existing library of functions for C

            time and date

Utility functions

            Know how to use:

                        strtod

                        atoi

Character functions

            Know how to use all functions listed on pgs. 588-589 and iscntrl, islower, isupper

Memory allocation / deallocation

            Know how to use:

                        malloc and calloc with pointer variables

                        free

C++ topics

            Inline

            new and delete

            Know some difference in how C++ deals with data typing issues vs. how C deals with the same issues.

 

Test will have some or all of the following characteristics:

            multiple choice questions (not more than 10) – typically 1 to 2 points each

            short answer questions

            coding questions which require either

                        writing code or

                        interpreting code or

                        debugging code

                  ( “code” includes declarations, preprocessor directives, function definitions and

                  general coding of statements and control structures and I/O commands)

            matching questions

            fill-in-the-blank questions

      Questions generally have their point value listed in braces at the end/side of the question

      Every test will have at least 10 points worth of extra credit available

      Assume that you will need to analyze each question carefully. Almost every question has multiple levels of definition and you must read and understand ALL parts of the question in order to give the complete and correct answer.

 

      Assume that memorization is not enough. Two study suggestions are the following.

1)   Pick a program that is coded in the book. Do NOT read any of the text before or after the program. By reading only the code itself, try to figure out everything that the code does. This means that you must determine the purpose and function of the OVERALL program not just what each line does individually. After you think you have it all figured out, then read the text to see if you were correct and if you missed any actions that occur in the code.

2)   Pick an exercise from the end of the chapter of the type that says “You are an ---- for company X and you have to write a program to . . .” Given the information in the exercise, try to create the outline of the program, what subfunctions you would want to create, what type of data is passed around, what input and output are needed. Make sure that each of your planned functions has a unified single purpose and that the code to implement it would not have to be very long.

      These two types of study will help you practice analyzing code and analyzing problems to be coded.

Test grades are assigned on a curve based on the range of actual scores on the test, i.e. the highest score on the test (for example, an 89) will be the top of the curve so all scores will be assigned based on where they fall (100 – 90 A, 89 – 80 B, etc.) AFTER the actual score has been divided by the curve. For example, a high score of 89 would give that student an A because 89/89 100 = 100. On the same test then, a score of 68 would be curved as 68/89*100 = 76 so that student would get a C (rather than a D for the original 68).

 

The test will be hard. I write very challenging questions that require you to think all the way through them. A few of the questions will be memory type questions because some rules must be memorized to make a student an efficient programmer in a language. Most however will require lots of mental effort. Do not get too upset about it – remember EVERYONE is suffering through the same test you are and that everyone’s grade will be curved. Check out my website for a few example test questions from last semester’s tests. They will give you a sense of how my tests are written.