CS100J Spring 2006

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 use Java and MATLAB in different amounts to teach the same concepts:

Neither course presumes previous programming experience. CS100M requires 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.

Those taking CS100J this semester will be very well prepared for the next course, CS211. Those taking CS100M will be less prepared because Java is taught for only 7 weeks, so the object-oriented topics are not studied and practiced as much.

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

Course webpage: http://www.cs.cornell.edu/courses/cs100j/2006sp/. Look at it several times a week. It is a major communication medium for the course. If you miss a handout, download it from the website. Also, participate in the newsgroup for the course —find about it by clicking on the the link "Newsgroup" near the bottom of the lefthand column of the course webpage.

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) 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 6-7 computer projects, 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 and scroll down to the bottom of the page. You are expected to be at these three prelims; we don't 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. 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 may decrease (e.g. B to B-). All sections will take place in the ACCEL laboratory in Carpenter —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. It is not about grades. It is about all of us working together to teach you as much about programming as we can 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. Learning 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, practise.

Please do this on your PCs to reduce chances of errors later. Fix your PCs so that extensions (like .java and .doc) ALWAYS appear. To do this, do the following: Open an explorer window. Use menu item Tools / Click on Folder Options. Click the view tab. Uncheck the box "Hide extensions for known file types".