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 #1 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 0-13
Head First Java, Ch. 7, 8, 9, 11, 15, 16, pp. 670
Programming assignments 0-3
Detailed topics:
Topics covered in CSCI 135 and 136 exam #0, but with an emphasis on the topics below:
Single versus multi-threaded programs
How to create and start a new thread using an instance of a Runnable object
The unpredictable nature of thread scheduling
States a thread can be in
How and why threads request to sleep
Waiting for thread to complete using join()
Passing data to/from a worker thread
Danger of more than one thread accessing same underlying data structure
Using synchronized to protect shared data at a method level
When a method should be synchronized and when it shouldn't
Deadlock, what it is, circumstances it can occur
Networking basics: IPv4 addresses, port numbers, private IP addresses, localhost, DNS