|




| |
Course Details at a Glance
|
|
Lectures: |
Mon., Wed., Thurs., Fri.,
8:30 - 9:20 a.m., Olin 217 |
| Instructor: |
Thomas C. Bressoud, Olin 207, 587-5630,
bressoud@denison.edu |
| Handouts: |
Hardcopies: In-class or at my office |
| Exam Code |
A, Monday, May 5th, 9:00 - 11:00 a.m. |
|
Description
|
|
The Denison computer science
curriculum begins with a fundamental assumption that, to be a successful
computer scientist or software engineer, you must begin with a foundation
that includes good programming skills. Thus, one of the first goals
of this course is for you to learn a new programming language. Java
has been selected as the introductory computer language of choice for the
reasons of cross-platform ubiquity, relative simplicity, and strong object
orientation as the principal programming model. So you will learn
the syntax and semantics of Java. This is much like learning to
speak a foreign language with very restrictive syntax and vocabulary.
The key to learning the language is by practicing as much as possible.
The other reason to focus on a programming language in the
introductory computer science curriculum is to use it as a means to
develop problem solving skills. At its core, computer science is
about the algorithms used to solve problems. And learning to
translate a real-world problem into a precise, specific, realizable set of
steps (or algorithm) is exactly the type of skill that extensive practice
with a programming language will allow us to develop.
In addition to the programming language of Java itself, the
course will provide an introduction to some of the breadth of computer
science, including computer hardware, operating systems, data
representation, and some rudimentary algorithm analysis. More detail on the specific topics to be covered can be
found in the outline below, or by looking at the course schedule.
This iteration of the course will be something of an
experiment, in that we will be using some non-traditional tools for the
course. The first tool that is different is the primary textbook
itself. The text consists of a multimedia-based e-text, which will
provide the students the ability to play/replay the provided lessons as
often as they like and at their own pace. The e-text will be
utilized both in the classroom as well as for out-of-class activities.
As the e-text will be used to convey much of the material, the time in
class will be less lecture-centric. Instead, we will use class time
both to reinforce important concepts, as well as to provide considerable
lab time for working with lab exercises, and getting individual time and
help from the instructor. |

Textbooks
|
|
The following textbook is required for the course:
 | David Gries and Paul Gries. ProgramLive:
Master Java Programming in a Dynamic, Self-Paced Learning Environment,
John Wiley and Sons, Inc.,
2002. ISBN 0-471-44158-9. |
The following is a supplementary (optional) text, so
that you may have an introductory Java text that is not e-text based.
 |
Cay Horstmann. Computing
Concepts with Java Essentials, 3rd Edition, Wiley and Sons, Inc.,
2003. ISBN: 0-471-24371-X. |
You will also need to
bring/buy a set of headphones for use of the e-text in the
classroom. |

Course Web Page
|
A web page will be maintained for this
course. The web page will include reading, homework exercises, and project
assignments, scheduling of events (including midterms) and other useful
information. Please check it regularly:
http://www.denison.edu/~bressoud/cs171-s03/
|

Final Grade Determination
|
| Exercises: |
30% |
| Midterm Tests: |
30% (10% each) |
| Final Exam: |
25% |
| Project: |
10% |
| Class Participation: |
5% |
|

Course Work
|
-
Exercises/Homework:
-
There will be homework exercises at least once a week and
sometimes twice a week. These will not be weighted equally, as many of the
lab-oriented exercises will be a quick check of answering the questions in the
ProgramLive companion workbook. Others will be full-fledged programming
assignments, wherein you will write increasingly larger and more complex Java
programs. And a few will be written exercises so that you can demonstrate
your mastery of the conceptual issues and to prepare you for the types of
questions that might appear on the tests. Homeworks are due in class
on the date specified. This semester, I am going to try my new Russian roulette
late policy. For each day (whether class is held or
not, and including weekends) an assignment is late, an additional 10%
will be deducted from your score. So if an assignment is due on Wednesday, and
you turn it in on Friday, and your raw score on the assignment is 85%, you would
receive a 68 (85 - 0.20 * 85). The roulette part is that, if I grade and
turn back the homeworks from the other class members, or if I pass out an answer
key prior to your turning in a late homework, then you get a 0 on the
assignment. In practice, a class day or two will probably be safe.
You may discuss homework problems with other students in the class,
but written work must be your own. In other words, you may talk
generally about homework problems with your peers, but when it comes time
to write your solutions, you are on your own. You may not get help on homework
from students outside the class. Of course, you are always welcome to come
see me for help.
If your handwriting is illegible, I reserve the right to request
that your homework be typed into a word processing program. If you know
that your handwriting is difficult to read, you may want to proactively prepare
your non-programming homework exercises in Word or another word processor.
-
-
Projects:
-
By the end of the term, you will be
proficient enough in programming that I will be assigning a more ambitious final
project. This will entail a project definition, implementation, and
documentation. More details will be given later in the semester.
-
Exams:
-
There will be three midterm tests as well as a final
exam. Each midterm will cover its respective quarter of the course
material. Note that the midterm tests are not cumulative. The final will be cumulative and cover material
from the entire semester, but I would expect a greater weight given to the
material from the last portion of the class. All exams will be closed book, closed notes.
-
Class Participation:
-
In general, we would like everyone to do their part to make this an enjoyable
interactive experience (one-way communication is a much poorer way to learn). Hence in addition
to attending class, we would like you to actively participate by asking
questions, joining in our discussions, etc. Note that there is a significant
portion of your grade attributed to class participation. Any day
that you do not attend class, you (by definition) do not participate, and
so be very careful about missing class, as it will affect your grade.
|

Student Responsibilities
|
-
Attendance:
-
Your attendance is expected at each class meeting. Per the class participation
portion of the grade, I reserve the right to take into account attendance
in instances of borderline grade assignments. Of course, excused absences
(sickness, family emergencies, athletic) will not be held against you.
-
Readings:
-
You are responsible for the content of reading assignments, lectures and
handouts, as well as announcements and schedule changes made in class,
whether or not you are present. If you must miss a class, be sure to check
with me or another student to get what you missed. Exams will be given
in class on the day scheduled and may not be made up.
|

Other Issues
|
-
Disability Accommodation:
-
Any student who thinks he or she may need an accommodation based on the
impact of a disability should contact me privately as soon as possible
to discuss your specific needs. I rely on the Office of Academic Support
in Doane 104 to verify the need for accommodation based on documentation
on file in their office.
-
Academic Integrity:
-
Do your own individual homeworks and projects.
Do NOT copy from another person. There should be no reason for two
nearly identical assignments. Usually a warning will be given first and
then an incident of academic fraud will be reported for subsequent incidents.
|

Course Outline
|
| Week |
Description |
| 1 |
Introduction to Programming; Aspects and overview of
hardware and software; Initial introduction to objects, classes,
methods, and parameters. Also initial introduction to the tools
of the ProgramLive EText and the BlueJ Integrated Development
Environment (IDE). |
| 2 |
Class definitions: fields, constructors, and methods.
Cover variables and basic types, primitive expressions, assignment,
and sequences of statements. Depending on pace, we might also
look at conditionals here. All done within the context of
customizing existing methods. Also depending on pace, cover
output from a method. |
| 3 |
Conditionals in more detail. More on variables,
including state-maintaining instance variables. User input and
basic Strings. Object types. Object interaction. |
| 4 |
First midterm. As time permits, also cover
abstraction, modularization, and debugging techniques |
| 5 |
Designing your own classes. Static variables and
methods. String methods. Method main. |
| 6 |
Data types in earnest. Operators and more
advanced expressions. Parameter passing. |
| 7 |
Graphical User Interfaces and Event Programming |
| 8 |
Second midterm. Reinforce GUI and Event
programming. Applet coverage. |
| 9 |
Program design, methodical programming, Specification.
Begin collections. |
| 10 |
Collections continued and Loop constructs. |
| 11 |
Third midterm. Begin searching techniques. |
| 12 |
Searching continued. Exception handling.
|
| 13 |
Sorting. Project definition. Some File I/O. |
| 14 |
Project. Some material on Threads if time
permits. |
|
|