cs3157 - Advanced Programming.
Summer 2006


Home Homeworks Schedule/Lectures Class Web-board Resources

Announcements:
  • Lab 5 Posted
  • Homework 2 posted
  • If you use eclipse for perl, epic 3.12 required for debugging
  • Makeup date will probably be June 23 3pm-6pm pending class vote on June 5th
  • Reading c posted
  • Lab2 online
  • Lab 1 and homework 1 posted
  • Reading List posted
  • Welcome to Advanced Programming
General Information: http://www.cs.columbia.edu/~sh553/teaching/su06-3157/
Meeting Times and Locations:
Summer 2006 M/W 5:30-8:40pm, 627 Mudd
Prerequisites:
  • Intermediate Programming Knowledge (cs1004,cs1007) or equivalent
  • Want to have fun using computers, without being bored to death
  • Interest in using programs to interact with the web
Instructional Staff:
Instructor:
Prof. Shlomo Hershkop. (shlomo@cs.columbia.edu) (AIM: Prof Hershkop)
Office Hours: M/W 4-5:20pm or by appt.
TA:
Tae Yano (ty2142@columbia.edu)

Office Hours (Tu 4:00 - 5:30 and Th 11:00 - 12:30)
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/CPP :
Deitel and Deitel
C How to Program, Fourth Edition
ISBN: 0131426443
Note: It contains both c/c++ material.

Environment:
You will need access to a computer to install and run specific program requirements....I recommend a laptop, although it is not required.
Due to the duration of the summer semester, a CS account is not required.

Course Structure:

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

  • 6 Labs 120 points
  • 2 homework's 60 points
  • Final: 60 points

In other words, all the components are extremely important, but the hands on labs and 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 and Lab Policy:

The hands on lab is a crucial part of quickly learning and assimilating the different programming languages and concepts covered in the course. Because of the tight summer schedule, it is essential that you keep up with the material by completing the labs on time.

Unless other arrangments are made, if you do not submit your lab by the due date, the lab will be graded to a zero.

Homework's will generally consist of a programming project. 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). 

You are given 4 "late days" that can be used towards homework/lab 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 three 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 unless you can be creative!)

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 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.