CS112 Introduction to Programming (Spring 2012) [an error occurred while processing this directive]: Course Info
CS 112 is an introductory programming course, using the
Java programming language. There is no
prerequisite for the course -- in particular, no prior programming
experience is required -- although it helps to be "computer
By the end of the course you should be able to write useful Java programs. But the focus of the course is programming concepts, so besides learning how to write cool artifacts you will also learn things like object-oriented programming (classes, methods, objects, etc.), control structures (conditionals, looping, recursion, etc.), data types (arrays, strings, numbers, lists, queues, stacks, etc.), basic algorithms (sorting, searching, etc.), and some advanced ideas (exception handling, input/output streams, etc.).
The purpose of this course is to teach the fundamentals of programming, not Java, not object-oriented programming, and not graphical user interfaces. What you learn will be applicable to all future programming tasks you may encounter. Nonetheless, Java will be the primary language we use in the class.
The required textbook is:
The following book is *not* required but it is recommended to those who prefer a slower-paced (and more verbose) introduction to Java:
A few additional good Java books include:
Additional course materials will be available "on-line," as described below:
There will be weekly or biweekly homework assignments -- about 9 or 10 in all. For the most part, these will be computer programs written in Java. See the Collaboration Policy below.
Grading will be based not just on whether your program runs or not, but also on how well it is written: it should be well-structured, documented, and generally easy for someone else to read and understand. In other words, the style of your program is important.
Each homework assignment will be given equal weight. We will have two exams; each counts twice points as those of a homework assignment.
An assignment that is more than three days late will not be accepted. Extra credit is not accepted after the due date.
If an assignment is late but not more than three days late, a penalty will be taken on the final grade of the assignment, if your allocation of lateness points has been used up. Each assignment has a 3-hour grace period. Late assignments are assesed on a 4-point penalty per day or partial day (assume each assignment is worth 20 points): 0-3 hours late (no penalty), 3-24 hours late (4 points), 24-48 hours late (8 points), 48-72 hours late (12 points). Your first 20 lateness points are automatically waived.
Programming, like composition, is an individual creative process. Individuals must reach their own understanding of the problem and discover a path to its solution. During this time, discussions with friends are encouraged. However, when the time comes to write the code that solves the problem, such discussions are no longer appropriate -- the program must be your own work (though you may ask teaching assistants or peer tutors for help in debugging).
Do not, under any circumstances, copy another person's program. Writing code for use by another or using another's code in any form violates the University's academic regulations and will be dealt with harshly. We will carefully screen programs for evidence of copying, using a combination of automated tools and human eyeball.
Attendance at lectures is expected but will not be recorded. Students are, however, fully responsible for all material presented in lectures, even if some of it does not appear in the "official" lecture notes. Class attendance is recommended strongly.
We will use the Piazza forum server as well as the Yale class server to keep in touch. Piazza offers a quick way to interact with your instructors, TAs, peer tutors, and your fellow students. To sign up, please go to the following site:
If your question is more like "What in the world does this homework assignment mean?" or "Help!", come see us in person.
You should read the course home pages rather frequently as they appear for important information, such as lecture notes, instructions on submitting your assignments, clarifications and hints, last minute schedule changes, etc.
Copyright (c) 2000-2012 Zhong Shao, Richard Yang, Daniel Abadi, Drew McDermott, and Paul Hudak, Department of Computer Science, Yale University