This course couples work on program design, analysis, and verification with an introduction to the study of
data structures that are important in the construction of sophisticated computer programs. Because we will
be interested in studying more modern techniques for designing large, complex, and reusable code, we will be
using the object-oriented programming language, Java.
You will be expected to write a collection of programs, ranging from very short programs to more elaborate
systems. Since one of our goals in this course is to teach you how to write large, reliable programs
composed from reusable pieces, we will be emphasizing the development of clear, modular programs that are
easy to read, debug, verify, analyze, and modify.
Equally important is the ability to analyze programs using big-"O" notation to understand their runtimes.
This will help us evaluate the trade-offs in different choices of algorithms and data structures.
By the end of this course, you should have a good understanding of object-oriented design, coding and
debugging of programs in Java, and of how one might analyze programs for efficiency. In particular, you will
understand the trade-offs involved in selections of different data structures and algorithms to solve
computational problems.
This course is a prerequisite for most upper level Computer Science courses.
Prerequisites: The formal prerequisite for this course is Pomona CSCI054.
We also assume that all students enrolled are comfortable writing small to medium-sized programs (around 500
lines of code with several interacting classes)
in either Java or Python. The knowledge assumed is generally equivalent to the different versions of CSCI051
as offered at Pomona or the Computer Science advanced placement exam.
Be aware that neither CS5 nor CS60 at HMC satisfy the prerequisites for this course. If you have
any doubts as to whether your programming experience is sufficient for this course, please see us as soon as
possible.
Lectures take place on Mondays and Wednesdays at 1:15-2:30pm in Seaver Commons 102. See the schedule for details.
Monday 7-9pm (Evelyn and Gloria)
Tuesday 6:30-8:30pm (Chau and Emily)
Wednesday 7-9pm (Earn and Maxim)
Thursday 6:30-8:30pm (Michele), 8-10pm (Neil)
Friday 4-5pm (Camden)
Sunday 7:30-8:30pm (Evelyn)
Labs are mandatory and take place on Fridays at 1:15-4pm in Edmunds 219/229.
Alexandra Papoutsaki Alexandra.Papoutsaki@pomona.edu Edmunds 222 Office Hours: M 2:30-4pm, W 10am-noon, and by appointnment |
Neil Chulani | |
Evelyn Hasama | |
Stevie Kim | |
Maxim Koretsky | |
Camden Le | |
Gloria Lee | |
Michele Tang | |
Chau Vu | |
Emily Wang | |
Earn Wonghirundacha | |
Alex Wood |
See the
assignments and labs schedule for details.
Labs for this course will be held on Friday afternoons from 1:15-4:00p.m. in 219 and 229 Edmunds. The rooms are equipped with some iMac computers but you are welcome to use your own laptops.
Attendance of the lab sessions is mandatory. Please arrive well prepared for the lab, having read the description thoroughly.
Unlike in CS051, most weeks lab work will be distinct from the weekly programming assignments, though the lab work will generally be relevant to the longer assignments.
Instead, we will often use lab time to introduce you to new software tools and techniques that require more hands-on experience to understand.
You will usually need to submit your results from the lab by end of the lab day.
There will be two types of weekly programming assignments: individual and partner assignments. All programs assigned during the semester should be completed following the guidelines in the Academic Honesty Policy.
There will be about 10 assignments due. All assignments will be graded on design, documentation and style, correctness, and efficiency. The elements of a good program are very much like the elements of a good paper.
It must be correct, but it should also be written in a style that is clear and elegant. Most programs will be tested using automated tools, so it is essential that your program meet all of the specifications provided in the project handout. You will also receive written comments on all of your programs by the TAs.
Weekly assignments will generally be due on Thursday evenings at 11:59pm.
You get three late days that may be used at your discretion to submit
assignments after the deadline with no penalty.
Notify the instructor when you use a late day.
For team
assignments, both you and your partner must spend a late day
available to use one. Further
extensions after you have exhausted all your late days will be
granted only in exceptional circumstances.
There will be two midterms and one final exam in this course. Minderms will take place in class on February 26 and April 8. The final exam will take place on May 8 from 2-5pm. See the schedule for details.
Finishing all the assignments successfully is required to
pass the class. After that, grades are computed on a point basis, as
follows:
Assignments: 30%
Midterms: 30%
Final Exam: 25%
Labs: 5%
Quizzes: 10%
In general, collaboration is encouraged in CS62.
This means that you may discuss approaches to solving problems with anyone in this class, including students, faculty, and TAs.
As specified in the department policy, you may help, or receive help, in using systems and tools, in debugging code, and in working with high-level design issues.
However, using material from any external source--web page or person or book--is forbidden. This includes tools like chatGPT.
The actual solutions to the assignments and labs and the code you submit must be your own (and your partner's, if applicable).
Except for material from resources linked on the website or slides, you may not copy, retype, view, or share a copy of any file.
If you have any questions about what is appropriate or inappropriate collaboration, please speak with the instructor.
When in doubt, credit your sources.
Course materials provided to you, including graded papers and exam
summaries, are for your use in the course. You are encouraged to use
them to the fullest extent, but you are not to publish them or
distribute them to other people or organizations.
There will be stringent penalties for violations of academic honesty,
up to failure in the course.
All students are welcome in this class, and all of the course staff are committed to providing equal opportunity for all students. If you have concerns about anything that is preventing you from fully participanting in the class, please talk to us so that we can address it. Requests for formal accommodations may be made by contacting the Disability Coordinator on your home campus; all accommodations will be honored.