CS 203: Programming with Data Structures
Instructor: Kiri Wagstaff

Course Details

Course description
Advanced programming techniques; elementary data structures such as dynamic arrays, linked lists, stacks, queues, and trees; sorting and searching algorithms. Laboratory activities on problem analysis and software development.
Course goals
At the end of the course, students are able to:
  • Design recursive methods
  • Use dynamic data structures: linked lists, stacks, queues, trees, heaps
  • Implement basic searching and sorting algorithms
  • Analyze algorithm efficiency and complexity
  • Select appropriate data structures and algorithms to solve specific problems
  • Use Java Generics and Collections: Array, ArrayList, Iterator, LinkedList, Vector, Stack, etc.
Prerequisites
Object-oriented programming experience (CS 202).
Recommended: Math 207, Math 248.

Vital Statistics

Time and place
Credits: 5
Lectures: TH 4:20-6:00 p.m., ET-A220
Labs: TH 6:00-7:15 p.m., ET-A220
No class: 11/22 (Thanksgiving)

Office hours:
Tuesdays, 7:15-8:15 p.m.;
Thursdays, 3:15-4:15 p.m. (both in ET-A220)
Email: kiri.wagstaff@calstatela.edu

Textbook
Daniel Liang, Introduction to Java Programming, 6th edition, Prentice Hall, 2006.

Other references:

  • David Flanagan, Java in a Nutshell, 5th edition, O'Reilly, 2005.
Exams
  • Midterm: October 23, 2007, during lecture
  • Final: December 4, 2007, 4:30-7:00 p.m.

Policies

Grading Policy
Your course grade will consist of:
  • Projects (3): 25%
  • Lab Exercises (18): 18% (drop two lowest)
  • Midterm: 25%
  • Final: 30%
  • Class Participation: 2%
    • Examples: asking questions in class,
      posting to the course discussion page
Grading scale (scores are truncated, not rounded):
  • A-: 87-92, A: 93-100
  • B-: 70-74, B: 75-80, B+: 81-86
  • C: 60-64, C+: 65-69
  • No Credit: 0-59
Late work:
  • Lab Exercises are due at the end of the lab period. No late exercises will be accepted. Instead, your two lowest lab scores will be dropped and not count towards your course grade.
  • Projects are due at the beginning of lecture on the date specified. They may be submitted one day late, with a 50% reduction in score. No other late projects will be accepted.

Distinguished credit:
Each of the projects includes an "Extensions" section. If you finish the main part of the project and find you have extra time on your hands, I encourage you to attempt these (more challenging) extensions. The Extensions for each project are worth up to 1 Distinguished point.

Important: Distinguished credit differs from "extra credit" in that you can receive points for it only if you achieve an 80% score on the basic project assignment.

Brief FAQ:
  1. What is Distinguished credit good for?
    One Distinguished point will raise your final course grade by 1%. With 5 projects, you could potentially raise your final grade by 5%.

  2. Why do I have to get an 80% on the main project?
    Without this restriction, students may be distracted by the promise of "extra credit" and divide their time and attention between the main project and the Extensions. Because the Extensions are more challenging, they could consume too much of your time and cause you to do poorly on the main project. To prevent students from falling into this trap, I require that you do a solid job on the main assignment before attempting the Extensions.

  3. It's not fair. Distinguished credit only helps students who are already doing well in the class!
    The purpose of the Extensions is to provide extra challenges for students who have finished the main project. If you have not yet completed the main project, I would rather have you focus on it than on the Extensions; the main project is more important.

Academic Integrity
Cheating will not be tolerated. Cheating on any assignment or exam will be taken very seriously. I encourage you to familiarize yourself with the Cal State LA policies on Academic Honesty, which includes examples of what is considered cheating. In the context of this class, the following examples also qualify:
  • Using Google to find a solution to a lab exercise or project. You are encouraged to use the web as a reference (e.g., "how does this Java method work?") but not as a solution-generator. Take pride in your own work, and show me what you yourself can do.
  • Collaborating on an assignment with classmates when this has not been explicitly permitted in the assignment description. Use your judgment. For solo assignments, questions of clarification are certainly germane. "How did you get this to work?" and "Can I see your code?" are off-limits.
Penalties for any cheating can include a grade of F for the course and will be reported to the appropriate university authority.
Guidelines for Projects and Lab Exercises
Each project and lab exercise assignment indicates what should be turned in, and in what format. In general, these guidelines apply:
  • You may use any development environment you like. However, submit only your .java source files (not any project/IDE files). Your code will be compiled and tested in a command-line environment, so it is a good idea to check that this works prior to submission. To receive full credit, your code must compile.
  • Each Java source code file must contain a header with your name, the class name and number, the quarter, the name of the assignment, and the assignment due date.
  • You will be graded on coding style. Use modularity, break long lines, and comment your code to guide the reader in understanding how it works. You may wish to browse the Java Programming Style Guidelines. Include Javadoc-style comments in the header of each file and to describe each method (Sun's guidelines for Javadoc comments).
  • Each project includes a required (short) writeup. This is part of your grade, so don't neglect it!
Expectations of Students
  • In class:
    • Arrive to class on time.
    • Turn cell phones off during lecture and lab. Refrain from sending or receiving text messages, and please do not check email or browse the web during lecture.
    • Consume food/drink outside of the classroom.
    • Complete assigned reading before lecture.
    • Participate in class discussions and activities.
    • Submit work on time. Late work is accepted only for projects, one day after the deadline, and will incur a 50% reduction in score.
    • Be present for the midterm and final. Makeup exams are not offered except in extreme circumstances. Contact me immediately if you have a conflict.
  • Outside of class:
    • Place "CS 203" in the subject line of course-related email.
    • Check email on a daily basis. You are responsible for being aware of course announcements.
    • Mandatory meeting after midterm with instructor to evaluate progress (signup online).