Computer Science 5
Introduction to Computer Science
Overview/Syllabus, Fall 2003

 

 


General Information

 

Instructor:   Zach Dodds
Office:  Olin 1265
Phone:  x78990   (909-607-8990)
Email:   dodds@cs.hmc.edu
Official Office Hours F 9-12 or feel free to arrange a meeting...
Real Office Hours stop by anytime!


Course Home Page

 

http://www.cs.hmc.edu/courses/2003/fall/cs5/


Is CS5 for you?

 

Absolutely! CS5 is intended as an introduction to programming and computer science that uses Java language. It does not assume any knowledge of programming. It is part of the Harvey Mudd core curriculum, though students with a programming background and at least some knowledge of Java can pass out of CS5 by taking a placement exam at the start of the fall semester and writing a couple of example programs.


Textbooks

 

There are no required texts for the course. The primary source of information about the programming language Java and the fundamentals of programming will be the on-line reference and text linked chapter-by-chapter below. This book is David Eck's copylefted java notes from Hobart and William Smith Colleges. If you know programming and are interested in learning or brushing up on java, Sun's Java Tutorial is the definitive place for information.

There are certainly many printed books, too, about Java and learning the language. The best one (as far as I'm concerned) is Head First Java by Bert Bates and Kathy Sierra.


Date / Time / Place

 

CS5 is a lecture and laboratory course; the lecture portion is held in HMC's Galileo Pryne, and the hands-on portion is held in the academic computing labs (Parsons 146). There are four sections:

  • Section One: Mondays 2:45-4:00 (Pryne), lab 4:00-5:00 (Parsons 146)

  • Section Uno: Tuesdays 1:15-2:30 (Pryne), lab 2:30-3:30 (Parsons 146)

  • Section Eine: Wednesdays 2:45-4:00 (Pryne), lab 4:00-5:00 (Parsons 146)

  • Section Un: Thursdays 1:15-2:30 (Pryne), lab 2:30-3:30 (Parsons 146)

There is an optional "recitation" session meeting on Fridays at 8:00 am in Galileo Macalister. This meeting offers a centralized time and place for students to ask questions about anything from course concepts to the week's homework problems. I encourage you also to take advantage of formal (and informal) office hours to discuss the class and homework.


Tutoring Hours

 

There will be tutors/graders ("grutors") available for assistance with CS 5 assignments and concepts in Parsons 146 (the PC lab on the Academic side of campus) and the Linde Lab, as schedules permit.

 

Your grade in the course will be based on a combination of your homework, quiz, and exam performance.

From there, the following chart maps points to grades. Keep in mind that this is for reference only. If you base your efforts on understanding rather than point acquisition, the points will follow.

% of Points Earned Letter Grade
95-100% A
92-94.9% A-
88-91.9% B+
84-87.9% B
80-83.9% B-
77-79.9% C+
73-76.9% C
70-72.9% C-
65-69.9% D+
60-64.9% D
< 60 F
   Here is how the points are approximately divided:

Assignments 600 points (each is about 50 pts)
Final exam 300 points
Midterm exams 100 points
"Quizzes" 50 points

Students who take the course pass/fail receive a high pass if their grade falls in the A range and a pass if their grade falls in the A- to D- range. Also, students with an A average do not need to take the course exams! For those students grades are computed as if the exam points simply do not exist. Note that the actual number of points in the class will not be exactly 1000 (as the right-hand chart would suggest) -- it's meant only as a rough guide.


Homework Assignments

 

There will be weekly homework assignments, due at the following times:

         11:59 pm Sunday evening for Monday's and Tuesday's sections.
         11:59 Monday evening for Wednesday's and Thursday's sections.
         
These assignments are intended to exercise and solidify your understanding of the week's material, review older material, and look ahead to new topics. They are the most important part of the course.

Because the assignments are timestamped automatically, it is important to get them in on time. (There is a little bit of leeway so that something submitted at 12:05 isn't counted late, but we don't mention the exact amount of wiggle room to avoid pushing the deadline further into the night.) Allow for contingencies such as the problem being harder than you thought, no one being available for help when you need it, the compiler or computer suffering from brain-damage, or you or your machine crashing at inopportune times... . We will make every effort to have a tutor will be available on Sunday and Monday evenings, but we can't make a 100% guarantee. (See the tutoring hours section, above.)

Assignments will be graded out of 50 points; 40 of those points are for the correctness of the program(s) submitted. A program that does not compile, for example, receives 0 correctness points. 10 points are for program style -- two points for each of the following items:

  • Use of indenting and consistent indenting. Choose an indenting style and stick with it! There will be lots of example code to help choose a readable style.


  • Header comments. Be sure to have your name, the file name, the date, and a general comment of purpose at the very top of all of your assignment files. You may also want to include notes to the graders there.


  • Code Comments. You should comment each method (function) you write with its purpose. Within your code, you should add comments to describe at a high-level what is going on. These inner comments need not be everywhere, but enough should be included to get the general sense of how your code works.


  • Variable names should be balanced between easy to use (short) and easy to understand (descriptive). If you like using one-letter names, be sure to comment what they are, except for common practices like using i or j for loop indices.


  • Use of whitespace. Code without sufficient whitespace to indicate its high-level structure can become very hard to read. Use liberally.

Remember, you can always ask about things before you submit your actual product. There is no reason to lose points on most of the above. You also lose no points or esteem for asking. Each assignment will also have extra-credit questions worth up to 20% of its overall score. These questions will introduce other material or particularly challenging applications; extra credit is also useful for getting out of exams -- see below.


Submitting

Submit your assignments using the Homework Submission page which can also be reached from the quick link on the course home page.

You may submit your solution ahead of the due date if you like. If you would like to have your assignment graded ahead of time, you'll need to email me (dodds@cs.hmc.edu) to let me know!

Your grade, along with the grader's comments will be automatically e-mailed to you once the assignment is graded. If you realize you have made a mistake in an assignment that has not yet been graded, and the due date/time has not passed, you may go ahead and submit a new solution; it will replace the previous submission.

Once the homework solutions are posted, no further submissions can be accepted for credit.

Please keep in mind that homework assignments are being graded by student grader/tutors. While we try to get all the graders on the same wavelength before they grade an assignment, perfect consistency is impossible. If you do feel you have been graded unfairly, or just don't understand a grader's comments, or you want to chat about anything, feel free to email me (dodds@cs.hmc.edu) or to stop by Olin 1265.


Resubmits

This is allowed and handled on a case-by-case basis, so if you would like to consider resubmitting, contact me by email or drop by.



Exams

The course will have a total of three exams. Two are hour-length, take-home midterms given during the semester. The third is the final exam. Exams are to be taken closed-book -- any necessary reference materials will be distributed with the exam.

Students in CS5 must take each exam with one exception: you may opt out of midterm exams if you have an A average for the course at the time of the exam. In that case, you are exempt from taking the exam. Your grade will be computed as if the exam were never given, so that it neither helps nor hurts your grade. Also, grade offers will be made before the final exam.


Attendance

About five or six years ago, when the computer science department first proposed running core CS as a primarily lab-based course, some students said to us:

What will you do to keep a student (like me) with bad habits from blowing off the material and class and, as a result, falling hopelessly behind and becoming miserable?

(As Dave Barry would say, we are not making this up!)

To help avoid this, attendance in lab sessions is mandatory (except as described below under "Getting Ahead"). You are allowed one unexcused absence; with each additional absence there is an accompanying deduction of 100 points from your final grade. If you know you will be out for some unavoidable reason, simply let me know.

Although I certainly encourage attendance at the lectures and, if you feel uncomfortable about the week's material or would like additional help with the assignments, at the Friday morning recitation sections, those meetings are optional. However, keep in mind that the week's homework is the primary topic for both lecture and recitation -- the time spent there will more than be made up when working on the week's problems.


Honor Code Standard

 

In this course we focus on individual learning rather than group efforts, and thus observe the following version of the Honor Code: You may discuss an assignment with other students. You may not share written work of any kind, inside or outside the course. Clarification: We consider computer files, fragments of files, and printed output to be written work. In developing code for a programming assignment, you can discuss ideas with others. Once you have an idea, it is up to you to develop it yourself. You can get hints from others, but discussion of ideas must not involve transcription of the actual working code of others, with the exception that you may use (with attribution) any code explicitly provided by one of the professors or grader/tutors. Do not share your code with others.

Definitely forbidden is any form of collaboration wherein two or more students split up an assignment, then transcribe each others' contributions, sometimes changing names of variables, comments, formatting, etc. If the help you get from another is significant, you should acknowledge it on your submission.

If you have any doubts about whether a form of interaction constitutes a violation of this standard, please consult with us before continuing.


Getting Help

 

The comments about the honor code notwithstanding, it is important that you try to overcome any inhibitions that you may have and actively seek out help when you are having trouble in the course. Ask questions in the lecture, recitation, and/or the lab about things in the notes you don't understand. Come to me or the tutors with more questions. Don't be afraid to return again and again if something doesn't make sense.

Too many times a student will bang his or her head against a wall for hours trying to figure out why a program isn't working, when a few minutes with the professor or another student is enough to make it clear.

While fellow students are a good source of help, do keep in mind two caveats: you must be careful not to overstep the bounds of acceptable collaboration, and you should realize that CS5 changes every year, so that there will be some differences in what you're facing from what CS5 alums remember.


Getting Ahead

 

CS5 has been structured so that you may work ahead of the prescribed pace. Many students take the class with significant programming background (perhaps in a language other than Java). For such students (or anyone else), I encourage you to work as quickly as you'd like.

The benefits of working ahead come in two forms:

  1. While attendance in lab is ordinarily mandatory, you are excused from a lab session if you have already completed the homework for that week or some future week, i.e., you have submitted it and received a score of at least an 80% (40/50).


  2. Completing a homework project early also exempts you from doing any earlier projects. That is, suppose you complete and submit the homework project for week 5 during week 1. In that case, you are not required to submit the homework for weeks 1 up to 4. You will receive the same grade for those weeks as you receive for the week 5 homework project.

    Since submitting the week 5 homework project is equivalent to submitting the current and intervening projects, it also excuses you from lab through week 5.

    While this work-ahead option can substantially lessen the work involved in CS 5, each student must complete at least assignments 5, 10, and 14 in the class. In fact, if you handed in assignment 5 after the first week, assignment 10 after the second week, and assignment 14 after the third week (and did well on all of them), you would essentially have completed the course!

In order to support your efforts in working ahead, you need to get any early-submission assignments returned to you promptly! Please email me (dodds@cs.hmc.edu) if you are submitting ahead, so I can get your work back to you... otherwise, I'll assume you're working on the assignments week-by-week.


A Note About the Online Text

 

The course home page and the online text make use of Java -- a browser supporting Java is nice, though not mandatory. The chapters do render differently under various versions of Netscape and Internet Explorer (and Mozilla, Safari, Lynx, etc.).

For some people, it is easier to absorb material from a printed page -- so, while some features of the online text are only usable on screen, for your first pass through a chapter, you may want to consider printing it out.

Of course, in lab or while working on homework, it is handy to have the text and lab assignments there on screen for quick access. Below are links to the course assignments, the online text, and class slides.



The course in a nutshell:
Online Text, Assignments, and Class Slides

 

      Week             Assignment            Class Slides           Text Chapter         Recitation Slides   





9/1 - 9/5 Due  9/7 Lec1.ppt Chapter 1 No recitation
9/8 - 9/12 Due  9/14 Lec2.ppt Chapter 2 Lec2r.ppt
9/15 - 9/19 Due  9/21 Lec3.ppt Chapter 3 Lec3r.ppt
9/22 - 9/26 Due  9/28 Lec4.ppt Chapter 4 Lec4r.ppt
9/29 - 10/3 Due  10/5 Lec5.ppt Chapter 5 Lec5r.ppt
10/6 - 10/10 Due  10/12 Lec6.ppt Chapter 6 Lec6r.ppt
10/13 - 10/17 Due  10/19 Lec7.ppt Chapter 7 Lec7r.ppt
10/20 - 10/24 Due  10/26 Lec8.ppt Chapter 8 Lec8r.ppt
10/27 - 10/31 Due  11/2 Lec9.ppt Chapter 9 Lec9r.ppt
11/3 - 11/7 Due  11/9 Lec10.ppt Chapter 10 Lec10r.ppt
11/10 - 11/14 Due  11/16 Lec11.ppt Chapter 11 Lec11r.ppt
11/17 - 11/21 Due  11/23 Lec12.ppt Chapter 12 Lec12r.ppt
11/24 - 11/28 Due  11/30 Lec13.ppt Chapter 13 Lec13r.ppt
12/1 - 12/5 Due  12/7 Lec14.ppt Chapter 14 Lec14r.ppt
12/8 - 12/12 Due  12/14 Lec15.ppt Chapter 15 Lec15r.ppt


vim
This page was built with vim on a unix box.