COSC 4360 Final Exam Review
The exam will be given on Wednesday, December 14, 2010 at 8:00 AM in CS-114.
You will have two hours and 15 minutes to complete the exam. The exam is a comprehensive
exam that covers the entire course, but focuses on Sebesta chapters 12 and 13.
You are allowed a student prepared, original,
handwritten, maximum three-page reference sheet.
Most of the exam questions will be of two types:
- Short Answer. You will be given a question on a programming language concept
and asked to explain your understanding of the concept.
- Problem. You will be given a problem that directly reflect what we have
discussed in class.
Exam 1 & 2 Material. Revised versions of the most often missed questions
from Exam 1 & 2 will be included in this exam. You should be familiar with
all of the material in the exam reviews for these exams. I will be including
material that was not included in the original exams. If the score you receive
on this exam exceeds the score you received on one of the other exams, this
score will replace the other score.
COSC 4360 Class Objectives. The following are the formal class objectives
for COSC 4360. You can assume that there will be at least one question/problem
that demonstrates your knowledge in each of these areas.
- Understand reasons for studying concepts of programming languages, programming
domains, language categories, programming design tradeoffs, and language evaluation
- Understand the brief histories of a variety of programming languages
- Understand the problem of describing programming language syntax, formal
methods, and attribute grammars
- Understand lexical analysis, the parsing problem, recursive descent parsing,
- Understand names and namespaces, variables, bindings, type checking, type
compatibility, scope, and constants
- Understand data types in many forms including primitive, character string,
user defined, arrays, associative arrays, records, unions, and pointers
- Understand programming language expressions, operators, type conversions,
relational and Boolean expressions, short-circuit evaluation, and mixed mode
- Understand various programming language statements including selection,
iteration, unconditional branching, and guarded statements
- Understand fundamentals and design considerations of subprograms, various
methods of passing parameters, overloaded subprograms, generic subprograms,
and overloaded operators
- Understand semantics of subprogram calls and returns and the scoping of
nested subprograms, blocks, and dynamic scoping
- Understand concepts of data and program abstraction and ADTs, parameterized
ADTs, and encapsulation
- Understand programming language concurrency, semaphores, monitors, and
Chapter 12, Support for Object-Oriented Programming (OOP).
- Understand the basic object-oriented concepts, including classes, objects,
derived class or subclass, parent class or superclasses, methods, messages,
message interface or protocol, single inheritance, multiple inheritance, and
- Understand how dynamic binding is used in OOP, including abstract methods
- What are the advantages and disadvantages of having everything be an object
in an OOP language?
- What are the advantages and disadvantages of having polymorphism require
dynamic type checking of parameters and return types
- What are the advantages and disadvantages of allowing multiple inheritance
versus allowing an interface as C# and Java do?
- Understand and be able to evaluate how OOP was implemented in Smalltalk,
C++, Java, and C#.
- Know the answer to review questions 2 - 8, 17 - 25, and 30 from Chapter
12, Review Questions
- Be able to do problems 8, 9, 11, 13, 15, 19, and 23 from Chapter 12, Problem
Chapter 13, Concurrency.
- Why is concurrency needed in modern programming languages?
- What is a task or process? How are they different from subprograms?
- What is the difference between a heavyweight and a lightweight task?
- What is task synchronization? How is it typically accomplished?
- What is the difference between cooperative and competitive synchronization?
- How does the scheduler facilitate task execution?
- Understand the typical task execution states.
- What is the relationship between liveness and deadlock
- Understand the three methods of providing synchronization. Be able to give
the advantages and disadvantages of each.
- How do rendezvous occur?
- Understand how threads are executed in C#. How does C# synchronize threads?
- Know the answer to review questions 2 - 5, 13, 16 - 23, and 45 - 49 from
Chapter 13, Review Questions
- Be able to do problems 2 and 3 from Chapter 13, Problem Set