cs3157 - Advanced Programming.
Fall 2005


Home Homeworks Schedule/Lectures Class Web-board Resources

Announcements:
  • Extra Credit posted
General Information: http://www.cs.columbia.edu/~sh553/teaching/3157f05/
Meeting Times and Locations:
Fall 2005 M/W 2:40-3:55pm, 209 Havemeyer Hall
Prerequisites:
Intermediate Programming Knowledge (cs1004,cs1007)
Instructional Staff:
Instructor:
Prof. Shlomo Hershkop. (shlomo@cs.columbia.edu) (AIM: Prof Hershkop)
Office Hours: M/W 11:30-2pm, T/TR 11:30-12:30, 2:30-3:30 and by appt.
TA:
Mark Tabry (met2105@colum...) (AIM: cs3157TA)
Office Hours (TA room): Mon 4-6pm

Tae Yano (ty2142@colum...)
Office Hours (TA room): Wed 4-6pm

Steve Lianoglou (sl2585@colum..)
Office Hours (TA room): Friday 1-3pm
Course Objectives:
This course is a third course for majors in computer science.

The primary objective will be to learn the tools and tricks of working with programming projects.

A secondary objective is to offer a practical, hands-on introduction to programming techniques and tools for professional software construction, including learning how to write code to given specifications as well as document the results.

Provides introductory overview of C and C++ in a UNIX environment, for students with Java background. Also introduces scripting languages (perl) and basic web programming. UNIX programming utilities are also covered. Lab required.

We will develop sound programming and design skills, problem solving and modeling of real world problems from science, engineering, and other areas of interest using anything that works.

Course Materials:
Required Text:

Perl :
Programming Perl
Third Edition, Wall, Christiansen, and Orwant
OReilly Publishing
C :
Brian Kernighan and Dennis Ritchie. (2004)
The C Programming Language, 2nd Edition (isbn 0131103628)
publisher: Prentice Hall PTR.
C++ :
Gregory Satir and Doug Brown. (2004)
C++ The Core Language, (isbn 156592116)
publisher: O'Reilly.
These has been ordered at the Columbia Bookstore

Course Structure:

There are three major components to a grade in this course: homeworks, midterm, and the final.

  • 6 homework's, 25 points each: 150 points
  • Midterm (open-book): 50 points
  • Final (open-book): 100 points

In other words, all three components are extremely important, but homework's are especially significant. Class participation is also strongly urged. While there is no numerical grade attached to it, as neither participation nor attendance is strictly required, it's in your interest to make an acquaintance with me, especially if you're on the "borderline" between grades at the end of the semester. We may also give some bonus point opportunities on homework's; these are added up after the curve at the end of the semester. 

Homework Policy:

Homework's will generally be divided into two parts: written theory questions and programming questions. You're generally allotted two weeks for each homework; make sure to start early so you can ask questions (or, make sure you have a lot of coffee and crossed fingers if you start the night before it's due). 

Homework's are usually due by the first section's class time, so you don't have an incentive to skip out on the next lecture, but this may vary when appropriate. Consequently, there will be two means of submission: hard-copy and electronic; the first will be required for the written problems, and the latter for the programming exercises. A link to the instructions will be posted on the homework's page well before the first homework is due.

You are given 3 "late days" that can be used to wards homework submissions during the semester. A late day is defined as exactly 24 hours, so if a homework is due at 11:00:00am on Tuesday, you could submit the homework by 11:00:00am on that Wednesday by using up one of your late days.

As an example, you can submit homework 1 two days late and homework 4 one day late -- but all of the remaining homework's must be on time. Beyond the late days, no late homework's will be accepted; if you're in such a situation, submit what you have instead of getting a zero. (Please don't come to my office or email me with excuses -- short of a medical, family, or national emergency, I'm not interested in them!)

One catch: you may only use up to two late days on any single homework. That means you could use two for one homework and one for another homework, or one each for three different homework's, or less -- but not more. 

Cheating Policy:

One word: don't. All homework's and exams in this course are intended to be done by yourself, because that is the simplest way to learn and absorb the material. Feel free to leverage your brain, textbook, teaching assistants, the instructor, and the web-board to help you solve homework problems.. You're allowed to discuss problems with classmates, but only in general terms, and you must specifically avoid discussing any solutions.

Moreover, you'd be amazed how easy it is to detect plagiarism or cheating in both written and programming assignments. Cheaters don't spend tremendous amounts of time masking their copy, because that defeats the purpose and it would be simpler to do the homework themselves. Invariably, therefore, they get caught. An infraction is a zero on the assignment or exam and a referral to your academic dean. See this page for more details.

You must also resist the urge to copy code from the web. Obviously, there are many Computer Science classes out there, and while we put every effort into making my homework's reasonably unique, there are likely to be similar approaches elsewhere. While we obviously can't forbid you to look at other slides or text material, any evidence of plagiarism from other sources will merit similar consequences.

Contact Information:
I would like the course to run smoothly and enjoyably. Feel free to come to us during office hours, or make an appointment to discuss anything you like or don't like about the course. Your involvement at making sure you are following the material and are "up to date" is key to succeeding in the course. Some students have problems in the beginning of the course, which is exactly the time to get help, before things get out of hand.

We can't always promise that we'll resolve your issues (such as randomly dropping a homework grade), but we're here to help you learn and get the most out of the class.