Computer Science: An Accelerated Introduction

Sarah Lawrence College
Fall 2006


Overview

This course is an accelerated introduction to computer science using the object-oriented programming language Java. Students will learn about the fundamental principles of problem solving with a computer while gaining the programming skills necessary to continue in the discipline. Throughout the course, we will emphasize the design of clearly written, well-structured programs. Starting with the basics, we will work our way up to implementing graphical interfaces with event-driven modules. Along the way, we will explore data structures such as arrays, linked lists, and trees, and study several important algorithms and techniques for analyzing the efficiency of our algorithms. Class periods will include intensive lab work involving hands-on interaction at the computer. Conference work will allow students to investigate a broad range of issues arising from the uses of technology, explore other programming languages, or learn Internet programming.

Open to any interested student.


Instructor

Prof. Jim Marshall
Office: Science 100
Phone: 2673 (from off campus: 914-395-2673)
Email: j + my last name + @slc.edu


Class Meeting Time


Course Materials

Textbook

An Introduction to Programming and Object-Oriented Design Using Java (Version 5.0), 2nd Edition
by Niño and Hosch

Course Policies

On-time attendance in all class meetings is absolutely required. If you are unable to attend class due to illness, please contact me on the day of the missed class (or sooner). If you must miss class for any other reason, please let me know in advance.

Late Homework Policy

Good Programming Style

In its purest form, programming is the art of expressing abstract ideas about computation in concrete language that is as clear and precise as possible. To become an expert programmer, it is not enough simply to be able to write fancy programs that run correctly on a computer. Programs must be written primarily for other programmers to read and understand, and only incidentally for machines to execute. Expert programmers rely at least as much on a well-developed sense of aesthetics and style as on technical mastery of the programming language.

Accordingly, your homework grade will be strongly influenced by the legibility and organization of your code. It is very important for you to develop a clear and consistent programming style, making good use of comments, indentation, and well-chosen variable and method names. Your code should follow the general stylistic guidelines listed below:

Getting Help

You are strongly encouraged to come see me whenever you are having difficulty with the material. If you are confused about something, don't stay that way! Staying confused will only make things worse later. Come talk to me as soon as possible so that we can clear up the problem. There is no point in staring at the computer screen for hours trying to figure out why your program won't work, when just a few minutes is usually all it takes to track down the problem together.

I'll be more than happy to schedule an appointment. Ask me about it in class, email me, or leave a message on my voice mail. You can also try to catch me on the fly, though I can't always guarantee that I'll have time to meet with you right then.

How to succeed in this course

Collaboration Policy

The highest level of academic integrity is expected of every student. You are strongly encouraged to discuss ideas and approaches to solving problems, on a general level, with your fellow classmates, but unless I tell you otherwise, the work you hand in must be exclusively your own. Effective learning is compromised when this is not the case.

Accordingly, you should never read or transcribe another student's code or solutions, exchange computer files, or share your code or solutions with anyone else in the class. Under no circumstances may you hand in work done by someone else under your own name, with the exception that you may freely use any code that I explicitly provide to you.

When in doubt, credit the people or sources from whom you got help. This also goes for any help obtained via the Internet. You will not lose any points for acknowledging significant help obtained in a legitimate fashion (for example, from books, Web sites, or articles). If you are ever unsure about what constitutes acceptable collaboration, just ask. Here are some example scenarios of acceptable and unacceptable collaboration.

Failure to abide by these rules is considered plagiarism, and will result in severe penalties, including possible failure in the course. Please do not put me, yourself, or anyone else in this unpleasant situation.