COSC 1435 Final Exam Review
The final exam will be given on Wednesday, May 15, 2013 at 1:45 PM in room
CI-138. You will have two hours and 15 minutes to complete the exam. The
exam will cover the entire course, specifically Brookshear chapters 0 - 7, and
Gaddis chapters 2 - 7. I will provide as part of the test package a copy of
Gaddis C++ Quick Reference. You will be allowed a one-page, original, standard-sized,
handwritten notes sheet. You will not be be allowed any other notes, calculators,
or reference sheets.
There will be a multiple choice/true false section of the exam primarily covering
the material in Brookshear. There will be short answer questions on the exam.
Most of the rest of the exam will be problems, of three basic types:
- Coding. You will be given a problem, typically a function or a code segment,
and be asked to code the item. These problems will be small and directly reflect
what we have discussed in class and the programs written for labs.
- You will be given an almost complete program, that is missing a key section
of code. A description of the missing code will be given. You will be asked
to provide the missing code.
- You will be given a code segment or a complete program and asked to look
at the code and determine what will be the result of running this code.
I will repeat the type of questions and concepts from previous exams, that
were frequently missed.
COSC 1435 Class Objectives. The following are the formal class objectives
for COSC 1435. You can assume that there will be at least one question/problem
that demonstrates your knowledge in each of these areas.
- Understand the algorithmic foundations of Computer Science and be able
to express algorithms in pseudocode.
- Understand the design of basic searching and sorting algorithms (linear
search, binary search, and selection sort).
- Understand the time and space efficiency of algorithms and Big-O notation.
- Understand how binary numbers are represented, basic concepts of Boolean
logic and logic gates, and understand the equality and addition circuits.
- Understand the Von Neumann model of computer organization.
- Have a basic understanding of machine language and assembly language programming.
- Have a basic understanding of computer system software such as compilers,
operating systems, and virtual machines.
- Design and develop basic computer programs using high level programming
language (sequence, selection, and iteration structures).
- Be able to design and implement programs that use arrays and functions.
Know all the material in the Exam 1 Review
and Exam 2 Review.
This exam is comprehensive. If the percentage score on this exam exceeds the
score you received on either exam 1 or 2, the lowest exam score will be replaced
with the final exam score.
The new material for this exam is as follows:
Gaddis, Chapter 7, Arrays
- Know how arrays are stored in memory and how much space an array takes
- Be able to look at C++ code and determine whether an array access goes beyond
declared boundaries
- Know how to initialize and access array contents, including arrays with
multiple dimensions
- Know how to use an arrays of strings
- Be able to pass an array to a function and return an array from a function
- Understand how to compare and copy an array of primitive data types
- Be able to code a function that sums the members of an array, find the maximum
and minimum values and their indexes, prints an array to a console, and finds
the mean of an array
Brookshear, Chapter 2, Data Manipulation
- What is the CPU? Know the major parts of the CPU.
- What is the relationship between the CPU, the main bus, and the motherboard?
- What is the difference/relationship between a machine instruction
and a machine language?
- Understand the stored program concept. Why has this become the standard
architecture that computers use?
- Be able to contrast a computer designed to use a RISC architecture with
one designed to use a CISC architecture.
- What are the major categories of machine instructions. Understand
the basic types of work each accomplish.
- Know the parts of a machine instruction (op-code and operand)
- Understand the fetch, decode, and execute cycle that most computers use.
What occurs during each phase of this process?
- How does a CPU communicate with disk drives and other input/output hardware?
- Understand parallel processing and the two primary architectures (MIMD and
SIMD).
Brookshear, Chapter 3, Operating Systems
- What are the basic functions of an operating system?
- What are the characteristics of batch processing and be able to contrast
those processes with interactive processing?
- What is the differences between applications software and systems software?
- What functions does the kernel perform as part of the operating system?
- What is the difference between the scheduler and the dispatcher?
- What is a deadlock as used in computer science?
Brookshear, Chapter 4, Networking
- What are the differences between a local area network, metropolitan area
network (also known as a campus network), and a wide area network?
- What advantages and disadvantages does a star network have over a bus network?
- What is the difference between a repeater, bridge, switch, and router as
these devices are used in a computer network?
- What are the characteristics of a client-server inter-process communication?
- What is the Internet? What design characteristics does the Internet have?
- What are some of the common protocols that run on the Internet?
- What is an IP address? How does a name such as 'tamucc.edu' get translated
to its IP address (64.71.82.16)?
- What is the relationship between the HTTP protocol and the World Wide Wide?
- What is a URL? Be able to give an example of a URL and break it down into
its parts.
Brookshear, Chapter 6, Programming Languages
- What is assembly language? What are the characteristics of assembly language?
- FORTRAN and COBOL were the first major programming languages. What are the
key characteristics of each? Why were they such a huge advance over assembly
language?
- What is a compiler and what does it do? Understand the steps of the compilation
process (Figure 6.13).
- What are the major differences between procedural programming and object-oriented
programming?
- Understand how classes, instances, instance variables, constructors, and
methods are used in object-oriented programming.
Brookshear, Chapter 7, Software Engineering
- What is the software life cycle?
- Understand the terms requirements analysis, design, implementation, and
testing. What is accomplished in each of these phases of the software
development life cycle?
- What is coupling and cohesion? When we do design of a software project,
why do we want to minimize coupling and maximize cohesion?
- We use the Unified Modeling Language (UML) to design software systems. What
are the major components of UML?
- Use cases are one of the tools we use to understand user requirements.
What are use cases and how are they used in software analysis?
- What are the two primary types of software testing strategies?
- What are the different kinds of documentation that are used in software
development?