Subsections

CS 115 Administration, goals and policies

Administrative stuff

Instructor:
Dave Naumann with office hours: TBA and by appointment.

Teaching Assistant:
TBA with office hours: TBA

Prerequisite:
none

Meetings:
Mon+FRI 12-12:50 in Kidde 360, WED 12-12:50 in Pierce 220, and lab Thu 9-10:50 in Lieb 319 (if the instructor is late to class, you should assume that I am lost and confused and will arrive shortly :)

Required textbook:
Introduction to Java Programming, by Y. Daniel Liang, 5th edition (Prentice Hall).

Don't be alarmed, we won't cover everything in this huge book. I chose the ``comprehensive'' version in hopes that it will be a useful reference for you after the course. (If you buy it at the Stevens bookstore, you get a free bonus book, Essential Java Class Reference for Programmers; I haven't seen it but the publisher recommends it.)

Software:
The TextEdit editor, Java compiler, and Java runtime system; they should be pre-installed on your Stevens laptops.

Mailing list:
cs115

Objectives and assessment

(preliminary)

This course introduces basic concepts of computer systems, information networks and programming. The primary goal is for the student to develop the skills required for developing software using imperative and object-oriented languages. A second major goal is for the student to learn the core features of the Java programming language and its standard libraries. This course helps you meet these goals by designing, implementing, and testing a number of small programs.

Several skills are needed to successfully write programs, including analytical thinking, systematic experimentation, persistence and patience, organization and time management, effective use of reference material (reading technical documentation, searching the web). As befits a university course, we focus on algorithmic thinking and problem-solving: Analyzing requirements, algorithm design, functions and procedural abstraction, pre- and post-conditions, loops and invariants. Top-down design, libraries and simple data structures (arrays and lists). Tools and techniques for debugging and testing.

Along the way, as time permits we will touch upon topics that can be studied in depth in other courses:

Computer architecture:
CPU, ALU, memory, cache, primary and secondary storage, data representation, fetch-decode-execute cycle, boolean logic, combinatorial circuits.
Software architecture:
classes, objects, encapsulation, polymorphism, inheritance. Separation of interface and implementation. Basic design patterns.
Networked systems:
Computer networks, protocol layers: IP, applications (WWW, email, multimedia). Applets and mobile code. Security, confidentiality, and authentication. Responsible use and behavior.

To assess student progress we focus on key skills that can be demonstrated. By the end of the semester, the student should be able to:

  1. Demonstrate the operational behavior of Java programs involving loops and recursion, by showing successive states of a program's computation, including stack frames.
  2. Implement a design given in psuedo-code, and test and debug the implementation.
  3. Design small Java programs to meet given specifications, using both loops and recursion, static and non-static methods, classes, inheritance, interfaces and abstract classes,
  4. Simplify a program's logical structure by algebraic manipulation of boolean expressions.
  5. Explain designs informally, using standard terminology and notations.
  6. Document program interfaces precisely and completely using pre-post specifications and loop invariants.
  7. Read technical documentation effectively, in particular, to find details about the Java APIs.
  8. Work cooperatively on small group projects.


Policies

You and your instructor are bound by the Stevens Honor Code.

Students are responsible for reading and understanding the course policies in these web pages and for announcements made in class and in the course email list.

You will be permitted to use the textbook and course notes for programming assignments but probably not during exams. The specific policy will be announced prior to each exam.

Coursework and grading:

Programming is learned by doing. The main focus of your work will be on programming assignments. Assignments will normally be structured in two parts:

There will be short, unannounced quizzes in class: The purpose is to motivate attendance and to help both you and your instructor gauge your progress.

The course score is a weighted average of the following categories, with the additional requirement that to pass the course you must score at least 60 in at least three categories.

The lowest two quiz scores will be dropped. Letter grades are assigned on the usual basis: $A=(\geq 90)$, $B=(\geq 80)$, etc.

How to prepare for quizzes and exams: It's obvious--attend class, do the reading, and especially do the programming assignments, carefully and thoughtfully. The purpose of programming assignments is not to turn them in on time--the purpose is to become a skilled programmer and get good grades on the exams. Get help from the TA and instructor and work hard.

There are no make-ups for quizzes or exams. The only possible exceptions are in the case of death in the student's immediate family or near-death experience of the student; advance notice is required.

Policies for programming assignments:

Except when groups are explicitly allowed, work must be done individually. You are encouraged to discuss the problems with your classmates but you must not share details of the solutions. If you are unsure whether you have shared too much, discuss the situation with the TA or instructor; it is your obligation to avoid even the appearance of cheating.

About timeliness. We all have trouble meeting deadlines, and as a near-beginning college student you are confronted with many difficult deadlines. But homework doesn't get easier to do if it's late. Doing it on time helps you avoid falling behind when it comes to subsequent lectures and quizzes. Hence the following strict policy for homework:
how late points deducted (out of 100)
0 0
up to 1 day 25
up to 3 days 50
3-7 75
$>$ 7 100
For lab grade the policy is simple: no credit for late, no make ups.

Adjustments:

Grades are based on the usual scale (90 for A, 80 for B, 70 for C, etc). The instructor reserves the right to give a higher grade than your course score, if your performance on later assignments and exams is very strong.

Your lowest quiz score will be dropped.

Your lowest assignment score will be dropped.

If after the third exam your preliminary course score is at least 80, you may choose to skip the final exam and keep that course score.



David Naumann 2006-04-13