cs1.jpg (4503 bytes) Course Description

Home

Course Description

Contact Info

Schedule

Grading

Grade Posting

Lab and Homeworks

Exams

Projects

Assignments

Notes

Course Overview

An introduction to computer science. This course focuses on problem solving. By the end of this course, the student is expected to be able to take a problem as given by a "client" and

i) reformulate it in a more formal manner
ii) develop a solution strategy and approach
iii) develop an *algorithm* to solve the problem
iv) implement the algorithm in some popular language.

Guidelines for iii) are that the algorithm to solve the problem should be represented in a concise universal manner which any "decent programmer" could unambiguously interpret and "code up" in whatever language s/he so desires, to arrive at an acceptable solution to the problem. We will use C/C++ for iv) and so a significant component of this course will be the mastery of several elementary aspects of C/C++. At times we will use some of the power of C/C++ without discussing what is going on behind the scenes. The sequel to this course, CS-II will teach you how to develop similar magic yourself.

Who Should Take This Course
If you do not plan to take the sequel to this course, CS-II then you should seriously consider Intro to Computer Programming as an alternative to this course. This course moves at a rigorous fast pace, however, we assume *no* prior "programming" experience; prior programming experience, in some language, may however be helpful. If you do not get a grade of C or better in this class, it suggests that you will have serious difficulties in CS-II.
Prerequisites
Algebra, geometry, trigonometry and pre-calculus as would be typical of a graduating highschool senior entering RPI.
No prior programming experience is required.
Syllabus of Topics
  1. Computing and problem solving -- pseudo-code.
  2. Basic operations, precedence.
  3. From pseudo-code to C++.
  4. Data representation and abstraction -- basic STL containers (vector, list, string).
  5. Functions.
  6. Data and file I/O.
  7. Algorithm design.
  8. Recursion.
  9. Algorithm efficiency.
  10. Introduction to OOP.
  11. Classes.

Textbooks

 Main text (required):

Problem Solving with C++
by Walter Savitch

C/C++ references (suggested, not required):

The C++ Programming Language, 3rd Edition
by Bjarne Stroustrup
A good C++ reference book will be your buddy in the future. This book is not good reading but is a good reference on C++.

The C Programming Language, 2nd Edition
by Brian Kernighan and Dennis Ritchie
This book is the definitive reference on C.

STL reference (suggested, not required):

STL Tutorial and Reference Guide, 2nd Edition
by David Musser, et al.
This is a good reference on STL containers and their associated algorithms.

Lectures

See the class hour schedule for the time and place of your lecture section. You are responsible for all material and announcements made during lecture.

Labs

See the class hour schedule for the time and place of your lab section. Labs will be weekly and attendance to scheduled labs is required. Those who show up late for lab or those who leave early without completing the lab risk not receiving full credit. Labs cannot be made up. The exams will contain material covered in labs.  Due to the size of the sections, you must attend your assigned lab section.  The TA will take attendance and you will not receive credit unless you attend your assigned section.

Assignments

The assignments consist of in class quizzes, weekly labs, exams and projects (roughly once every 2 weeks). See the assignments link for more details.

Projects

Projects may include theory, algorithm design and implementation (programming). Programs will be written in C++ using the standard library and must follow certain guidelines. NO COLLABORATION, except for debugging help, is allowed. Code may not be shared in any way. Project submissions will be compared electronically using a variety of software tools to detect code similarity. Late submissions will not be accepted. Any project submitted after the due time on the due date will be given a grade of zero unless it is accompanied with an institute recognized letter. It is the students responsibility to verify that their project was properly submitted and accepted for grading.

Exams

During the semester, there will be two midterm exams and a final exam, covering both the lecture and lab material.  With advanced notice, the exam schedule may be altered throughout the semester.  There will be no makeup exams given.  If you miss an exam you will receive a grade of zero.  To be exused from an exam, a student must present a doctor's note or a letter from the Dean.

The exams will be closed book and notes.

Unannounced Pop Quizzes

Unannounced pop quizzes will be little exercises scattered randomly through the lectures. No advanced notice will be given for pop quizzes. Students who miss a lecture during which there were some pop quizzes will receive no credit for those quizzes.

Collaboration Policy

All work you hand in must be completely your own. You may ask questions to the TA or myself, as described below. If you did discuss concepts with ANYONE, you must explicitly state this fact on the work handed in, mentioning what the nature of the discussion was.

Strictly no collaboration is allowed with anyone in doing graded work for this class. You may however obtain debugging help, and must state this fact in the work handed in.

Academic Integrity

It is very important that each student use his or her best judgment to ensure academic integrity in this class. We've outlined guidelines above concerning collaboration which everyone is expected to follow. Copying sections of another person's code for a project and copying answers from another person during an exam are considered cheating. Refer to the the Rensselaer Handbook for other various forms of academic dishonesty. Academic dishonesty will be dealt with harshly, usually an F in the course and a note to the Dean of Students (which becomes part of your permanent record) is the minimum punishment.

My General Approach to Academic Dishonesty:
  • Unsolicited Confession: Zero on the assignment, and no further action.
  • Solicited Confession: Depends on the nature of the dishonesty. Typically an F in the class.
  • Denial: I will present you with my evidence, give you an F in the class and forward the matter to the Dean of Students, suggesting further courses of action that may be warranted. The matter will become part of your permanent record.

Getting Help

The TA's and I are here to help you. The following guidelines will be useful to keep things efficient:
  • Conceptual questions about the course and lecture: Professor.
  • Projects: The TAs.
  • Lab Homeworks: The TAs or UTA's
  • Grades: If you have a problem with the way an assignment was graded, your first step is to see the TA, then the professor.
  • Programming and Debugging: You are generally expected to debug your own code. However if you have spent excessive time on a bug or programming issues, then you should contact the TA for help.
How to get help efficiently:
  1. Step 1: Attend the TA office hours or help sessions.
  2. Step 2: Email your TA with the question.
  3. Step 3: Make an appointment with the TA.
  4. Step 4: Email a UTA with the question.
If you need help regarding course substance then you should follow the same algorithm to reach the professor. It is generally inefficient to present the professor with your code and say "here, it does not work". It is better for you to try to formulate specific questions ahead of time, for example, what you are trying to do, how you are approaching it and what seems to be going wrong.

In all emails, include your section number (for example CS1-01) and your TA name.

Grading

  • No late assignments will be accepted unless you have an institute established emergency.
  • A request for a regrade must be made (in writing) no more than a week after the assignment / exam is handed back to you.
  • In the event of a regrade, your grade may go up or down.
  • You are responsible for keeping track of your own scores and grades which will be available through WebCT.

Course Web Site

The course web site is http://www.cs.rpi.edu/~magdon/courses/cs1.html. It will include information about labs, exams, and projects. You should check it fairly often for updates. You may also access this website through the CS department web page by following the courses link or the people link followed by the link to my home page.