CS 21: Algorithmic Problem Solving
Swarthmore College, Spring 2006

Section 1:   TR 9:55-11:10, 240 Sci. Center

Professor: Tia Newhall
Office: 249 Science Center
Office hours: W: 2:30-3:30, R: 4-5


Final Exam, Thursday, May 4th, 7-10pm, SCI Cunniff Hall 199

Office hours week of May 1st: Mon 1:30-2:30, Wed 1:00-2:00 (in CS Lab)


Class Schedule Topics, Readings, Assignments, Due Dates
Course Description and Text
How to Succeed in CS21
About Homework
About the CS Lab
Academic Integrity
On-line References links to Unix and Java help

Course Description

This course will introduce the fundamental ideas in computer science while developing skill in software development. Algorithms will be implemented in the Java programming language. Object-oriented programming and data structures will be introduced in order to construct correct, understandable, and efficient algorithms. This course is appropriate for students who want to learn programming. No previous experience with computers is required.

Required Text

Java Software Solutions: Foundations of Program Design, 4th Edition
by John Lewis and William Loftus.
Addison-Wesley, 2005. (ISBN: 0-321-32203-7)

How to Succeed in CS21


25% Exam 1
25% Exam 2
40% Homework
05% Class Participation/Attendance
05% Quizzes


Homework will generally be assigned on Tuesdays, and will be due the following Monday by 11:30pm. Typically, each assignment will consist of several separate programs. Only one of these programs will be graded (you will not know which one in advance). If you do not submit the program that is selected for grading, you will receive a zero for the assignment. Some homework assignments may have optional problems that you can complete for extra credit points.

Your homework assignments will be turned in electronically, using a special cs21handin program (to be explained in class). Late homework is not accepted. However, if you miss a deadline, you are strongly encouraged to complete the assignment anyway, since this really is the only effective way to learn the material.

Because many students feel they learn more through collaboration, you may work jointly with one other person on some designated assignments (although you may work alone if you wish). No more than two people should work together. If you work with someone else, you must submit a single, joint assignment with both names clearly indicated at the top of your program file(s). I will let you know on which assignments you are allowed to work with a partner.

Homework assignments will be given a numerical grade according to the criteria shown below. Note that a program that works 100% correctly gets a 3. In order to get an 4, your program also needs to be clearly organized and well-commented (but this doesn't mean over-commented!). The numerical grades will be scaled in some way so that the difference between a 4 and a 3 is more like the difference between an A and a B grade.

4 correct, logically designed, well-documented, efficient
3 correct, but has stylistic problems
2 partially correct
1 mostly incorrect

If there are known problems with your code, you should describe these problems in a comment at the top of your program file.

About the CS Lab

The CS Lab (room 240) and the overflow lab (room 238) are open 24 hours a day for CS students to work on their course assignments. When the CS Lab is in use by a class, you should work in the overflow lab.

We will distribute MicroProx tags sometime in the first week of classes. These will allow you entry to the CS Lab and entry into the Science Center after building hours. You should use the door between Martin and Cornell to get into the building after midnight.

Please read through the "welcome message", "computer user agreement", and "computer lab rules" under the "introduction" section of the CS help pages.

Academic Integrity

The College's Judiciary Committee (CJC) handles plagiarism offenses. The penalties for plagiarism are quite severe: usually the first offense leads to failure in the course, but it may additionally result in suspension. The following constitutes plagiarism on CS programming assignments:

Under no circumstances may you hand in work done with (or by) someone else under your own name. Your code should never be shared with anyone; you may not examine or use code belonging to someone else, nor may you let anyone else look at or make a copy of your code. This includes sharing solutions after the due date of the assignment. Failure to abide by these rules constitutes academic dishonesty and will lead to a hearing of the College Judiciary Committee.

The exception is that you may use code that the instructors have distributed in class and code from the book (you should cite this code as coming from the instructor or from the book). Also, if you work with a partner, then you and your partner may share code for the particular assignment on which you work jointly (again, both your names must appear in the comment at the top of the file). Additionally, CS21 clinicians are allowed to help you with your code.

Discussing ideas and approaches to problems with others on a general level is fine (in fact, we encourage you to discuss general strategies with each other), but you should never read anyone else's code or let anyone else read your code. If you are in doubt about some help that you received, then credit the person(s) from whom you got help and discuss the situation with your instructor.

For some examples of what we consider "okay" and "not okay" collaboration, look at the scenarios below.

Homework Scenarios

These are OK:

These are definitely NOT OK:


The following schedule is tentative; it will be updated as we go along:

1 (1/16) Java and Unix Intro skim: chapt 1, read: 1.4-1.6, 2.1-2.6
Using Unix I: Tues, 4-5pm
repeat session: Wed, 8-9pm
HW 0
HW 1
2 (1/23) Conditionals and Loops 5.1-5.5, 5.8
Using Unix II: Tues, 4-5pm
repeat session: Wed, 8-9pm

Friday: add/drop ends
HW 2
3 (1/30) Using Classes and Objects 3.1-3.8
Parts of a Program's Memory
String Class, Random Class, Math Class
HW 3
4 (2/6) Methods 4.1-4.4, 11.1-11.2
About Method Calls
HW 4
5 (2/13) OO design, Arrays 6.1-6.9, skip 6.5, 7.1 Tues
HW 5
6 (2/20) Arrays, File I/O 7.1-7.2, 7.4 Tues HW 6
7 (2/27) 2D Arrays, Searching 7.6, 9.4, 9.5
Exam 1, Tuesday in class
Exam 1 Topics
Thurs -
8 (3/13) Searching, Sorting, big-O 9.5, 9.4 Tues
HW 7
9 (3/20) Arrays of objects, Interfaces 7.3, 6.5
Friday: last day to withdraw
Tues & Thurs -
10 (3/27) Inheritance 8.1-8.5, 9.1-9.6 Tues & Thurs HW 8
11 (4/3) Linked Lists 12.1-12.2
Linked Lists
Scanner Class,
Tues & Thurs HW 9
12 (4/10) Linked Lists and Recursion 12.1-12.2, 11 Tues
HW 10
13 (4/17) BSTs 12.4
Binary Search Trees
Tues & Thurs HW 11
14 (4/24) BSTs, Graphics 2.7-2.9
Additional Clinic Wed 7-10pm
Tues -
Finals Week - Final Exam, Thursday May 4th, 7-10pm, SCI Cunniff Hall 199
Exam 2 Topics
Office hours week of May 1st: Mon 1:30-2:30 and Wed 1:00-2:00. Wed's office hours will be a Q&A session held in the CS lab
CS Dept picnic: Wed May 3, 3pm
- -


During clinic hours, the clinician is available to help with your weekly programming assignments.
Each week we will have CS21 clinics in the main CS Lab at the following times:

Meggie Ladlow

Clinician: Meggie Ladlow
Location: SCI 240
Hours: Sat, 2-5pm

Megan Schuster

Clinician: Megan Schuster
Location: SCI 240
Hours: Mon, 6-9pm

Scott Blaha

Clinician: Scott Blaha
Location: SCI 240
Hours: Sun, 1-4pm

On-line References