CS 21 Algorithmic Problem Solving
Section 02
MWF 9:30-10:20pm, SCI 240
Spring 2006
Swarthmore College

Professor: Benjamin Kuperman
email: kuperman AT cs swarthmore edu
Please include "CS21" in the subject.
AIM: ProfKuperman
Office: SCI 253
Phone: 328-8665
Office Hours: Mon: 2:00pm - 3:30pm
Thurs: 9:00am - 11:00am

Contents


Course Description

From the department course description:

This course will introduce fundamental ideas in computer science while building skill in software development. Algorithms will be implemented as programs in the Java programming language. Object-oriented programming and data structures will be introduced in order to construct correct, understandable, and efficient algorithms. A deeper coverage of these topics will be presented in CPSC-035. CPSC-021 is appropriate for all students who want to be able to write programs. It is the usual first course for computer science majors and minors. Students with Advanced Placement credit or extensive programming experience may be able to place out of this course. Students who think that they may fall into this latter category should consult with any computer science faculty member.


Tips for doing well in CS 21

These tips are for any course, but are especially important in CS 21.


Text and Useful Links

The text for this course is:
Lewis and Loftus, 4th ed cover
Java Software Solutions: Foundations of Program Design, 4th Edition
John Lewis and William Loftus
Addison-Wesley
2005
ISBN: 0-321-32203-7

Useful Links


Java Documentation

java.lang.* 1.5.0 Local Copy
java.lang.Character 1.5.0 Local Copy
java.lang.Integer 1.5.0 Local Copy
java.lang.Float 1.5.0 Local Copy
java.lang.Double 1.5.0 Local Copy
java.lang.String 1.5.0 Local Copy
java.lang.Math 1.5.0 Local Copy
java.io.* 1.5.0 Local Copy
java.io.File 1.5.0 Local Copy
java.io.FileInputStream 1.5.0 Local Copy
java.io.Serializable 1.5.0 Local Copy
java.util.* 1.5.0 Local Copy
java.util.Scanner 1.5.0 Local Copy
java.util.Iterator<E> 1.5.0 Local Copy
java.util.ListIterator<E> 1.5.0 Local Copy
java.util.Comparator<E> 1.5.0 Local Copy
java.util.Collection<E> 1.5.0 Local Copy
java.util.ArrayList<E> 1.5.0 Local Copy
java.util.LinkedList<E> 1.5.0 Local Copy
java.util.PriorityQueue<E> 1.5.0 Local Copy
java.util.TreeSet<E> 1.5.0 Local Copy
java.util.HashSet<E> 1.5.0 Local Copy
java.util.HashMap<K,V> 1.5.0 Local Copy
java.util.Hashtable<K,V> 1.5.0 Local Copy

Grading

Grades will be calculated based on the following distribution:


Homework and Course Policy

Attendance

Regular class attendance is expected. I am required to report to the dean any student whose repeated absences is impairing their performance in the class.

Please talk to me if regular class attendance is going to be a problem.

Programming Assignments

There will be a number of assignments made in this class. I expect every student to attempt each assignment and turn in the results. You are encouraged to complete every assignment as this is one of the most effective ways to learn the material. Do not expect to pass this class if you do not submit something for every assignment.

When homework is assigned, a due date will be made available (usually Wednesday Monday at 11:30pm). You are responsible for submitting your answers before the deadline.

If you know that for some reason you will not be able to submit the assignment before the deadline, you should contact me in advance of the deadline. Extensions are only granted in exceptional circumstances, but need to be done in advance.

Grading

Programming assignments will be graded on both correctness as well as programming style. Good programming style includes the following:

More information on Java style can be found on Sun's Code Conventions web page. There is also an open source tool checkstyle that can be used to check the style used.

(This may be revised during the course)
Programming assignments will be graded on a 5 point scale. A perfectly working solution is only worth 4 points. Doing extra credit, using good programming style, and effective use of comments are necessary to have a higher score. In general, the breakdown is as follows

If it helps, you can think of a 4 as the lowest A, 3 as a B, and so forth. The differences between a 4 and a 3 are much smaller than those between a 1 and a 0. Just add 5 and consider it out of 10 pts.

Programming projects will generally consist of multiple assignments, but I will only be evaluating one of them.

If a portion of your program is not working correctly, please clearly indicate it in the comments at the beginning of the file and in the methods that are not working. Problems that I discover are graded more severely than those you discover.

Plagiarism and Academic Dishonesty

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.

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 by citing them in a comment at the top of the file and discuss the situation with your instructor.


Clinic

The CS21 clinician is an additional resource to help you with this class. The clinician is available for 3 hours per week and will help you with any problems you are having in the class. If you use the clinician to help you with your homework, please cite their help.

Meggie Ladlow

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

Scott Blaha

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

Megan Schuster

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


Schedule

(Subject to change)
WEEK DAY ANNOUNCEMENTS READING HW
1 Jan 16 Using Unix #1 (4-5pm) (Jan 17) Java and Unix Introduction
  • Course overview
  • Basic Java programming
  • Javadoc
  • Compilation
  • Generating output

(Read Chapter 1; 2.1-2.6)
HW 0
Jan 18 Using Unix #1 (8-9pm) HW 1
Jan 20  
2 Jan 23 Using Unix #2 (4-5pm) (Jan 24) Conditionals and Loops
(Read Chapter 5.1-5.8)
Jan 25 Using Unix #2 (8-9pm) HW 2
Jan 27 Last Day to Add/Drop
3 Jan 30 Vim Tips and Tricks (4-5pm) (Jan 31) Using Objects and Classes
(Read Chapter 3.1-3.8)
HW 3
Feb 01  
Feb 03 No lecture, open lab Writing Classes
(Read Chapter 4.1-4.4)
4 Feb 06   HW 4
Feb 08   Object Oriented Design
(Read Chapter 6.1-6.9)
Feb 10  
5 Feb 13   Graphics
(Read Chapter 2.7-2.9)
HW 5
Feb 15   Arrays
(Read Chapter 7.1-7.9)
Feb 17  
6 Feb 20   HW 6
Feb 22  
Feb 24 Notes on the midterm exam
7 Feb 27   Lab time
Mar 01   In-Class review for exam
Mar 02 Midterm Exam (Evening) [7-9pm] SCI 181
Mar 03 No class
  Mar 06 Spring Break
Mar 08
Mar 10
8 Mar 13   Searching and Sorting
(Read Chapter 9.5, 9.4)
HW 7
Mar 15  
Mar 17  
9 Mar 20   Interfaces and Inheritance
(Read Chapter 7.3, 6.5)
Mar 22  
Mar 24 Last Day to Withdraw with W
10 Mar 27   Inheritance and Polymorphism
(Read Chapter 8.1-8.5, 9.1-9.3)
HW 8
Mar 29  
Mar 31  
11 Apr 03   Exceptions, Recursion
(Read Chapter 10.1-10., 11.1-3)
HW 9
Apr 05  
Apr 07  
12 Apr 10   Linked Lists
(Read Chapter 12.1-12.3)
 
Apr 12   HW 10
Apr 14  
13 Apr 17   Binary Search Trees
(Read Prof. Newhall's notes on BSTs)
Apr 19  
Apr 21  
14 Apr 24  
Apr 26 Notes on the final exam  
Apr 28    
  May 04 Final Exam Period: May 4 - 13
Final Exam - SCI 199 (Cunniff) - 7-10pm

Assignments

In order to submit assignments for this class, we'll be using a program called handin21. Simply run this program from the command prompt and follow the prompts.

Note: the other section of this course is using a program called cs21handin. Please don't get these two confused.


Last Modified: Mon 13 Mar 2006 02:59:10 PM EST - Benjamin A. KupermanVI Powered