COSC 1435 Exam 1 Review
The exam will be given on April 10th during regular class hours. You will have
50 minutes to complete the exam. The exam will cover Scheme and C# as presented
in lecturer and used in the assignments. You will be allowed a one-page (both
sides), handwritten, original note page. The note page may contain any material
that will benefit you during the exam. You will not be allowed a calculator
for this exam.
Most of the exam will be as follows:
- Short Answer Questions. You should review all material in the PowerPoints
as you prepare for the exam. Some questions will be directly from this material.
This includes material not covered during class lectures.
- Essay Questions. There may be a broad essay question that will allow you
to explain in depth your understand of the material we have covered.
- Programming Problems. You will be given problem, similar to the problems
covered during class and in the assignments. These problems will be small
and directly reflect what we have discussed in class and the assignments.
- You will be given a Scheme or C# program, asked to look at the code, and
show how execution occurred and determine what will be the result of running
- You will be given Scheme or C# code and asked to modify it to perform a
task associated with the original task.
Scheme - Overview and Basic Operations
- Understand the basics of Scheme history. Why was the language developed?
- What are the significant language features?
- Why is scheme useful as compared to other programming languages?
- What is the role of algorithms in computer science?
- What are the fundamental design features of Scheme?
- Understand the basic scheme syntax
- Be able to do the simple evaluations that Scheme does in the interpreter.
- Be able to define and use Scheme procedures
- Be able to use if and case syntax
- Be able to use Scheme lists and list manipulation tools
- How are lambda functions used in Scheme? What do the allow us to do that
is useful in Scheme?
- We did many example functions in class, be able to do these functions and/or
modify them to do related operations
Scheme - Overview and Basic Operations, Part 2
- Understand and use let, predicates, and recursion
- Understand tail recursion and how to cause it to occur
- Be prepared to take a normal recursive problem and turn it into tail recursion
- What are the "Key Elements of Recursion" and be able to use them
to solve a recursive problem
- Be able to contrast recursion versus iteration, especially how both are
implemented in Scheme
- Understand how the stackframe supports recursion
- In what situations is recursion not the right answer to solving a programming
- How does looping occur in Scheme?
- Why and how did C# come about?
- How is C# different and similar to C, C++, Java, and VisualBasic?
- What is the relationship between C# and .NET?
- What is managed code and what advantages and disadvantages does it have
over unmanaged code?
- Why is having type-safe code so important? What limitations does it bring?
What commonly used language are type-safe and which are not type-safe?
- Know the basics of the C# language
- What are C# collections and why do we use them to store information?
- How does C# use objects? Know the vocabulary of OOP as used in C#.
- Understanding boxing and unboxing. Why is it used so much in C#?
- Value Vs reference is used differently in C# than C/C++. Understand the
difference and be able to give examples where this impacts writing code in
- An understanding of whether a variable/object is a reference or value object
is critical in C#. What does this terminology mean? What determines which
category variables/structs/classes fall into? How are they handled differently?
- How is inheritance implemented in C#? Why is multiple-inheritance not implemented
in C#? What provides similar capabilities in C# as mulriple-inheritance?
- How is polymorphism implemented in C#?
- Every class in C# has a series of predefined methods. What are they and
why were they included?
- How are structs in C# different than in C++? Be able to give code examples.
- Understand how classes are defined and used in C#
- How is aggregation used in C#? Describe how this is different than what
was described in Chapter 3 of Booch.
- How does C# implement an interface?
- Know enums cold!
- What are generics used for in C#? Be able to convert a simple method from
a typed method to a generic method.
C# Files, Directories, & Object Persistence
- Why do we need to make objects persistent?
- How do we do file I/O in C#?
- Streams are not thread safe in C#. What problems does this cause when working
with I/O and using multiple threads?
- Understand and know how to use the file and directory libraries.
- What are the three primary ways that we use to make objects persistent?
Know the advantages and disadvantages of each method.
- Know the basics of XML. How is XML used?
- How is serialization and deserialization used in C#?
- What are the primary ways that C# has implemented serialization? Know the
syntax of serialization/deserialization.
- Understand the normal way that Win32 handles processes and threads? How
is this handled differently in C# .NET?
- Understand what a thread is and how threading is implemented in C#
- How are joins used in threading?
- How do we put a thread to sleep? What occurs when we do this? Why do we
need to do this?
- How do we share information among different threads? What are the issues
that occur when this happens?
- What is locking? How does it assist in making shared memory access safe?
How do we implement locking in C# .NET?
- When do we need to lock a variable?
- What is a critical section of code?