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
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
- Use Java Generics and Collections: Array, ArrayList, Iterator,
LinkedList, Vector, Stack, etc.
Object-oriented programming experience (CS 202).
Recommended: Math 207, Math 248.
Time and place
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)
Tuesdays, 7:15-8:15 p.m.;
Thursdays, 3:15-4:15 p.m. (both in ET-A220)
Introduction to Java Programming
, 6th edition, Prentice Hall,
- David Flanagan, Java in a Nutshell, 5th edition,
- Midterm: October 23, 2007, during lecture
- Final: December 4, 2007, 4:30-7:00 p.m.
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
- 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.
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.
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.
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%.
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
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.
Cheating will not be tolerated. Cheating on any assignment or exam
will be taken very seriously. I encourage you to familiarize
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
Programming Style Guidelines. Include Javadoc-style
comments in the header of each file and to describe each
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).