CSC 102, Spring 2012
This course intends to show you how to map problems onto programs. In this course, you will be designing your own data representations, and you will be programming in Java. The material in this course should be applicable to most modern programming languages. The course approaches the material systematically, showing for each class of data how to write functions that consume and produce this kind of data.
1 Prerequisites
Students taking this course must have a C- or better in CS101, must have a C- or better in Math 141 or 221, and have a basic understanding of algebra and mathematics.
Also, it requires curiosity and self-driven exploration.
2 Names, Times, Locations
2.1 Instructor
John Clements, aoeuclements @ brinckerhoff.org
2.2 Lecture & Lab
Section 6/7:
Lab: 11:00-12:00, MWF, room 14-303
Lecture: 16:00-17:00, MWF, room 14-249
Section 6/8:
Lab: 12:00-13:00, MWF, room 14-303
Lecture: 16:00-17:00, MWF, room 14-249
Google Calendar:
See my Contact Info page for my calendar. You can add it to your calendar, if that makes your life easier.
2.3 Web Page
This is the course web page, its link is http://www.brinckerhoff.org/clements/csc102-sp12.
3 Computing Environment
In this class, we will be developing code using Eclipse (unless I change my mind). Eclipse is polished but frightening, as you’ll see.
We will probably be using a web-based handin server; I’ll make the details available as I have them.
4 Readings
There will be a number of required readings. Most of them will be short pieces on the practice of programming.
The book has an optional textbook, Cay Horstmann’s Big Java.
5 Communication
This class will use Piazza. This will be the principal means that I’ll use to notify you of deadlines, organizational updates, and changes to assignments. If you’re not keeping up with the group, you’re going to be missing important information.
It’s also the best way for you to direct questions to me and/or the class. Feel free to e-mail me with personal questions, but use the Piazza group as your main means of communications. It’s possible to post anonymously, if you like.
You should already have received an invitation to the Piazza group; let me know if you need an invite.
Don’t post your code or test cases to the group; anything else is fair game.
Also, please keep in mind that I (and everyone else) judge you based in part on your written communication. Spelling, complete sentences, and evidence of forethought are important in all of your posts & e-mails. One easy rule of thumb: just read over what you’ve written before clicking post or send, and imagine others in the class reading it.
6 Labs
Labs in this course take the form of simple exercises to be completed in one to three lab periods, designed to help you understand the lecture material and to lead you toward solutions for the larger assignments.
Most labs will be "graded", in the sense that I will verify at the end of the lab period or at the beginning of the next one that you’ve completed the work. These will generally be simple credit/no-credit marks.
In labs, you are heartily encouraged to collaborate like crazy. Look at everyone else’s code, copy and paste, type on your neighbor’s keyboard, whatever. Labs need not be entirely your work.
7 Assignments
Programming assignments will be due at 11:00 PM. The handin method will likely be electronic, and will likely use either Web-CAT or moodle. Details TBA. Late assignments will not be accepted.
Your submissions should be anonymized. That is, they should not contain your name.
Part of your grade may include a score given by your fellow students on your code. In particular, in some weeks you may be given two (anonymous) submissions from other members of the class, and required to assign legibility and design points.
From time to time, we may examine student code, in lecture. Try to ensure that the code you submit is something you’d be proud to show to the others in the class.
7.1 Grading Methods and Expectations
I will be grading your code repeatedly in this class. On most assignments, your score will consist of a part (usually 20 points) based on your performance on a set of test cases automatically administered by the handin server, and a part (usually 6 points) based on my opinion of your code’s clarity, organization, and adherence to rules about purpose statements and contracts (in short: you’ve got to have them). As a rule, my "eyeball" score rubric runs something like this:
6 points – I simply can’t find anything wrong with your code.
5 points – some inelegant parts, or one or two purpose statements or contracts missing
4 points – an actual misunderstanding, or a widespread lack of purpose statements and contracts
3 points – a serious misunderstanding–you didn’t understand some major part of the assignment
2 points – your program is seriously incomplete, doesn’t compile, or has widespread major problems
1 point – you didn’t make any apparent progress on the program at all.
7.1.1 "But it Works!"
I reserve the right to assign bad scores to programs that work correctly; if I don’t think you’re doing a good job of programming, then you won’t receive a good score. "It works" isn’t a defense for bad code.
Naturally, all grades contain an element of subjectivity.
8 Attendance Requirements
I do not formally state attendance requirements, though part of your grade may depend on whether you attend the class regularly.
9 Honesty
In the programming assignments, you may not copy another student’s code (including test cases). You may not share code with other students in the class. That is, you may not allow another student to see the code you write for the class, deliberately or through obvious negligence.
I will use an automated tool to compare student submissions and identify dishonesty.
Students believed to be cheating–that is, both parties involved in the transfer of code–will receive a failing grade in the class.
10 Exams
There will be a quiz on Wednesday of week 2, a midterm on Wednesday of Week 6, and the Final exam at the regularly scheduled time. The quiz should take no more than 20 minutes. The midterm will take the full lecture period, and there will be no lab period on the day of the midterm. I reserve the right to add additional quizzes to the course (with a week’s notice); I would like to have more, but I don’t think I’ll have the time to grade them all.
The tests will be closed-note. No electronic devices, including cell phones or mp3 players, will be permitted during the exams.
11 Grades
Grades will be determined by performance on programming projects, the exams, and class interaction. A small fraction of the grade is determined by the labs, and by the instructor’s whim. The breakdown of the grade is expected to be as follows:
Assignments: 35%
Quiz(zes) and Midterm : 25%
Final: 25%
Labs: 10%
Instructor’s Whim: 5%