There will be a Q+A Wednesday night, December 12, beginning at 7:30pm in Friend 101.
The Tuesday-Wednesday precept before the exam will have time devoted to Q+A and review. The Thursday-Friday precept will be cancelled.
There was a Practice Timed Programming Exam on Wednesay November 28, at 7pm in Friend 006.
There will be one more Practice Timed Programming Exam on Sunday December 9, at 7pm in Friend 006.
As before, the Practice Programming Exam will be posted on the Precepts page the next day, so you can do it at your convenience.
The programming exam will replace your Thursday or Friday COS126 precept that week.
The exam will cover all material in the course, but with an emphasis on the material covered after Exam 1:
The written part of the exam (in lecture) covers all of the above. It will be multiple-choice or short answer questions on the important material. The best way to prepare for this part of the exam is to read the book and the on-line packets, and study the lecture notes.
The second part of the exam (Thursday evening) is strictly about programming. You will be asked to write a program from scratch (a mini programming assignment). Given the time limitation, this program will not be conceptually difficult, just a test of your ability to write a program that solves a simple problem. The best way to prepare for this part of the exam is to work a few of the easy exercises in the book and on the booksite that call for writing small programs.
This list is a summary of the main topics on the exam, for your use as a checklist when studying. Do you understand the basic ideas behind each of these topics? Do you know the names and contributions of the major players? If not, reread the appropriate sections in the book and lecture slides.
You should also be familiar with the following data types and instance methods:Math.sqrt() Math.max() Math.min() Math.abs() Math.sin() Math.cos() Math.exp() Math.log() Math.pow() Math.random() Math.round() Math.E Math.PI System.out.println() System.out.print() System.out.printf() StdOut.println() StdOut.print() StdOut.printf() Integer.parseInt() Integer.MAX_VALUE Integer.MIN_VALUE Double.parseDouble() Double.POSITIVE_INFINITY Double.NEGATIVE_INFINITY StdIn.readInt() StdIn.readDouble() StdIn.readString() StdIn.readAll() StdIn.isEmpty() StdDraw.line() StdDraw.point() StdDraw.circle() StdDraw.filledCircle() StdDraw.setXscale() StdDraw.setYscale() StdDraw.clear() StdDraw.show() StdDraw.picture() StdDraw.polygon() StdDraw.filledPolygon() StdDraw.rectangle() StdDraw.filledRectangle() StdDraw.square() StdDraw.filledSquare()
String data type: charAt(), substring(), matches(), indexOf(), length() Color data type: getRed(), getGreen(), getBlue() Picture data type: width(), height(), get(), set(), show(), save() Queue data type: isEmpty(), size(), enqueue(), dequeue() Stack data type: isEmpty(), size(), push(), pop() ST data type: put(), get(), contains() BST data type: size(), put(), contains(), get() How to use enhanced for loop to iterate through Queue, Stack, ST or BST.
A good way to practice for the EXAM is to solve problems from old exams.
Warning 1: Some old exams include questions on topics that we have not covered this semester, for example sequential circuit timing diagrams, percolation, Quicksort.
Warning 2: Studying questions that ask you to write code is worthwhile, but bear in mind that some of the old exams were two hours, closed book, no computers. When looking at an old exam, check the cover sheet to see if it was a 50 minute exam or a 2 hour exam. This term, the written exam will not have questions that ask you to write a significant amount of code. The purpose of the programming exam is to test your ability to write code.