3 hours, during lab on Wednesday, March 28th, 3-6pm
No makeups will be considered without an official University excuse
The exam will consist of two parts:
Written part
50 minutes
Closed book, closed notes
You are allowed a two-sided 8 1/2 x 11 note sheet, hand-written
No electronic devices are allowed during the written portion.
Programming part
100 minutes
Open web, open notes
This will be like a mini-programming assignment
You may use code from your past programming assignments or from the course web site
You will submit your final program(s) into the Moodle Exam #2 dropbox
Your program will be graded on correctness, clarity (including comments), design, and efficiency
You will lose a substantial number of points if your program(s) do no compile or if they crash on typical inputs
You can use a lab machine or your own laptop
No communication with any non-staff members is allowed.
This includes all forms of real-world and electronic communication (talking, sign language, ESP, email, twitter, IRC, facebook, SMS, posting questions on forums, smoke signals, etc).
Material covered:
Lectures 1-14
Head First Java Ch. 1-11, 15, 16
Programming assignments
Detailed topics:
Topics covered in CSCI 135 and in CSCI 136 Exam 1, but with a heavy emphasis on the topics below:
Recursion, base case, induction step
Examples of simple recursive algorithms: factorial, fibonacci numbers, binary search
Pitfalls of recursion: missing base case, no convergence, using when you shouldn't (Fibonacci)
What happens if recursion goes too far (stack overflow)
Difference between single and multi-threaded servers
Client: opening a connection to server, reading/writing data to socket, closing socket
Server: declaring port you are listening on, accepting a new client, reading/writing to socket, closing socket
Programming practice exams:
Princeton has a large collection of past programming exams available online.
A good way to prepare for the programming portion of the exam would be to complete some of these programming exams in a timed-environment.
Note their programming exams are 50-minutes while our exams are 100-minutes.
Also their exams are in a first course for non-majors.
You are in your second course for majors.
They also cover somewhat different material than we do.