Lab and Homeworks
Who Should Take This Course
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.
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.
Algebra, geometry, trigonometry and pre-calculus as would be typical
of a graduating highschool senior entering RPI.
Syllabus of Topics
No prior programming experience is required.
- Computing and problem solving -- pseudo-code.
- Basic operations, precedence.
- From pseudo-code to C++.
- Data representation and abstraction -- basic STL containers
(vector, list, string).
- Data and file I/O.
- Algorithm design.
- Algorithm efficiency.
- Introduction to OOP.
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
See the class hour schedule for the time and place
of your lecture section. You are
responsible for all material and announcements made during
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.
The assignments consist of in class quizzes, weekly labs, exams and projects
(roughly once every
See the assignments link for more details.
Projects may include theory, algorithm design and
Programs will be
written in C++ using the standard library and must follow
NO COLLABORATION, except for debugging help,
Code may not be shared in any way.
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.
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.
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.
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
My General Approach to Academic Dishonesty:
- Unsolicited Confession: Zero on the assignment, and no further
- 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.
The TA's and I are here to help you. The following guidelines will
be useful to keep things efficient:
How to get help efficiently:
- 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
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.
- Step 1: Attend the TA office hours or help sessions.
- Step 2: Email your TA with the question.
- Step 3: Make an appointment with the TA.
- Step 4: Email a UTA with the question.
In all emails, include your section number (for example CS1-01) and your
- 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
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.