CS100J Spring 2003

CS100J and CS100M offer an introduction to elementary computer programming concepts. The courses emphasize techniques of problem analysis and the development of algorithms and programs. To enroll in CS100, you must register for either CS100J or CS100M, which both use Java and MATLAB in different amounts to teach the same concepts:

Neither course presumes previous programming experience. To take CS100M, you must have a firm background in mathematics and at least one semester of calculus. Refer to http://www.cs.cornell.edu/ugrad/FirstCourse.html#CS100 for more information about both courses.

CS100J will teach you skills in programming using object-oriented techniques --those taking CS100J this semester will be very well prepared for the next course, CS211, those taking CS100M will be less prepared because of the fact that Java is taught only for 7 weeks, so the object-oriented topics are not studied and practiced as much.

============================

Course web page: http://www.cs.cornell.edu/courses/cs100j/2003sp/. Look at it several times a week. It is a major communication medium for the course. If you miss a handout, you can always download it from the website. Also, participate in the news group for the course.

The course material is discussed on the course web page. You need (1) the livetext ProgramLive, by Gries and Gries, (2) DrJava, a free Java programming environment, (3) Codewarrior, a nonfree Java programming environment, (4) some floppy disks to keep your Java programs on when you want touse CIT-lab computers, and (5) much later, an (optional) text on Matlab.

Homework will consist of computer projects (5-7 of them), which you can do with one partner, and some written assignments. The computer projects will be submitted electronically, in a way that we will describe later.

Tests: two (not three prelims and a final. To find out when they are, bring up the course home page, click on "Time & places" in the left column, and scoll down on the page that appears. You are expected to be at these three tests; we don't expect to give makeups unless a real serious problem arises.

Sections: The sections are an important part of the course. They will teach new material, review old material, have question/answering periods, demo various things, review for exams, hand back homeworks/exams, and so on. ATTEND YOUR SECTION, AS WELL AS THE TWO LECTURES EACH WEEK, FAITHFULLY.

Syllabus: The syllabus on the course website is tentative. In the coming weeks,. we will firm up more and more of it.

Academic integrity. This course is not a case of student against faculty and visa versa. It is not about grades. It is about all of us working together to teach you as much about programming, in as efficient a manner as possible. We know that you have other courses, and we will strive to make your workload in this course reasonable. We (instructor, TAs, consultants) stand ready to help you in any way we can. On your side, we expect you to be honest --read the academic integrity statement that appears on the course web site-- and we expect you to come to us early, if problems arise, so that we can solve them together. If you have a problem, talk to us immediately about it; don't wait four or five weeks, because then you may be too far behind.

Practise, practise, practise. Learning programming is different from learning many other topics, in that you are learning a skill that should allow you to progam any problem. It's not just a matter of learning a way to solve one particular kind of problem; after this course, your instructors in other courses may expect you to program anything with ease. Learening to program well takes practise. The more time you spend on the computer, trying things out, getting acquainted with programming features and techniques, the better you will do in this course and later. Therefore, practise, practise, and practise.