CS100J Spring 2005

David Gries, Prof of CS and Assoc. Dean of Engineering

Olin 167, 255-0393, dgries@cs.cornell.edu

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/2005sp/. Look at it several times a week. It is a major communication medium for the course. If you miss a handout, you can 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 text "Multimedia Introduction to Programming Using Java" and its accompanying livetext ProgramLive, by Gries and Gries,which is available at the Cornell bookstore, (2) DrJava, a free Java programming environment, (3) some floppy disks or a USB storage key on which to keep your Java programs when you want to use CIT-lab computers, and (4) much later, an (optional) text on Matlab (we will provide notes on Matlab).

Homework will consist of computer projects (5-7 of them), which you can do with one partner, and some written assignments. In addition, each lab will require you to show your completed lab assignment. Computer projects will be submitted electronically using CMS, the Computer Science Course Management System.

Tests: 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 prelims; we don't expect to give makeups unless a real serious problem arises.

Quizzes: There will be quizzes during the lecture from time to time. The purpose of a quiz is to let you know what material we think is important at a particular time and to force you to learn it. You will know exactly what the quiz will cover, and we expect everyone to get 100 on each quiz.

Recitations-Sections-labs: Sections are mandatory, and attendance will be taken. Should you miss three of them without valid excuses, which must be given to us ahead of time, your letter grade will decrease (e.g. B to B-). All sections will take place in the ACCEL laboratory in Carpenter, where you will be given instructions on what to do and what to hand in --get to it through the Engineering library.

Syllabus: The syllabus is on the course website.

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 program any problem. It's not just a matter of learning a way to solve one particular kind of problem; after this course, 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.