Intro CS Syllabus

Table of Contents

Syllabus

Instructor

Jason Healy
Memorial Hall, First Floor, right by the front door
Phone Extension 4434

Feel free to stop by my office in Memorial Hall to ask questions, or just to say hi. However, if you know you need a large block of time for extra help, please schedule it ahead of time so I can keep my schedule free for you.

Structure

This course meets four times per week (two 45-minute periods and two 70-minute periods). Class time consists of lectures and laboratory assignments. Homework consists of readings, short exercises, and completing unfinished lab work. As this is an honors-level course, students should expect to spend significant time outside of class working on their assignments.

Objectives

This course has the following primary objectives:

Materials

Our primary textbook for this course is Java: An Eventful Approach, by Bruce, Danyluk, and Murtagh. The text is available from the school bookstore.

Unless I warn you ahead of time, you do not need to bring your reading materials with you to class.

Computers

As one might imagine, you'll need access to a computer for this course. However, you don't need your computer in every class (unless you want to take notes on it). The homework assignments page states which classes you need your computer for. In general, all classes marked as Lab Section require you to bring your computer.

Mac OS X 10.5 (Leopard) includes the version Java that we use for this course. All students must have Mac OS X 10.5 installed on their laptops in order to take this course. I shall provide other software required for class (such as compilers, build tools, and editors) free of charge to the students.

Philosophy

Computer Science requires two major efforts of a student. First, they must learn how to break problems down into a structured solution that can be turned into a program. Second, they must learn the syntax and operation of a programming language to code their solution in. Note that the ability to solve problems is at least as important (if not more important) than the ability to write functioning code; students should be prepared to spend a significant amount of their time planning their solutions before coding.

In my experience, learning by doing provides the best route for absorbing the material. Thus, the student should feel free to make mistakes, ask questions, and try untested methods. I cannot overstate the value of asking questions early and often; Computer Science poses many difficulties, and these should be addressed as early on in class as possible.

Grading

Given my belief that learning by doing is best, the grades in this course are based heavily on programming assignments. A breakdown of how grades are computed follows, along with a description of each grade component:

Test Programs (30%)
Test programs resemble take-home exams; students have a long period of time to design, code, and test solutions to problems assigned to them. Students may consult lecture notes, assigned readings, and previous assignments, but may not receive help from other students or sources. If a test program is not offered during a term, the percentage for Lab Programs shall increase to 60%, and the percentage for Tests shall increase to 30%.
Lab Programs (35%)
Students must complete lab programming assignments approximately once per week. Lab programs reinforce concepts from the reading and allow students to practice their skills, and therefore have a smaller scope than test programs. Students may consult with each other about errors of syntax, but should only consult with the instructor regarding other difficulties.
Tests (25%)
Written examinations testing conceptual understanding make up the final major part of a student's grade. Students may not consult any sources (such as notes) during a test.
Class Participation (10%)
Students should participate in lectures by answering questions, completing in-class assignments, and by helping other students (or seeking help for themselves) during laboratory sections. I may also give short quizzes during the course to quickly assess student's understanding of recent topics. I may not announce quizzes ahead of time, so students should keep up with the reading to prepare themselves.

I grade assignments on a point scale, and convert raw point scores into letter grades during marking periods. If you need an estimate of your grade during the term, visit me in my office.

I evaluate programs based on the following primary criteria:

Correctness
Programs should produce results that meet the requirements of the assignment. Students should test their programs in several different ways to ensure that their software always produces correct results.
Logic
Programs should follow good design principles; someone who has never read your source code before should not have difficulty understanding how your program works. Programs that work, but that are convoluted or inefficient, shall not receive full credit.
Style
Programs must also follow good style principles. Documentation must exist for all major variables, classes, and methods. Students should name entities with clear, concise names. Finally, students should use a consistent style throughout a program to maintain readability.
Correctness, while very important, does not count for everything! Students should remember that their programs must exhibit good design and style in order to receive full credit.

Late assignments receive a one-point penalty for each day past their due date. Unless otherwise noted, assignments are due by the beginning of class (not during or after class). Students should always turn in late or incorrect programs, as a zero grade can cause serious damage to the term grade.

Extensions may be granted under certain circumstances. However, be warned that extensions usually require some form of "trade" to be made with the instructor (for example, detention in exchange for extra time). Extensions are more likely if there is evidence that the student has been working diligently and has an honest need for more time; waiting until the last minute to ask for an extension is not recommended.

Finally, some assignments may have a small amount of extra credit available by implementing extra functionality. However, the student should ensure that their program meets all of the regular requirements before attempting extra credit, or else the points lost will outweigh those gained from extra credit.

Academic Honesty

Unless otherwise noted, all programming assignments should be completed without the help of other students, adults, or resources (such as Internet sites, tutors, or source code). While being stuck on a problem can cause frustration, working through these difficulties remains the best way to truly learn the material. Turning in work that is not your own is not only dishonest, it prevents you from developing a full understanding of the material. Please see me if you need any extra help, or if you have any questions about these rules.

In general, my motto is "help in English is OK; help in Java is not". This means that you may receive hints from a classmate about how to perform a general task, but you should not ever copy pure source code from another student.