Prof: Chris FernandesF. L. Friedman and E. B. Koffman, Problem Solving, Abstraction,
& Design Using C++, 3rd edition, Addison Wesley Longman, 2000.
M.L. Young and J. R. Levine, UNIX for Dummies Quick
Reference, 4th edition, IDG Books Worldwide, 1998.
Office Hours: MW 1:30-4pm, TTh 1-2 or anytime my door's open!
Office: 229 Steinmetz Hall
Course Webpage: http://tardis.union.edu/esc014
Text (2 required). Available at the Bookstore:
ESc 014 is the second half of the introductory programming course that
began with ESc 013. We will continue learning the fundamentals of
computer programming using the C++ programming language.
Programming is mainly a
problem-solving activity, so the programming language you'll be
learning is really incidental. The goal is to
provide you with the skills necessary to effectively design, write,
debug, test, and complete programs that will get the
computer to perform the task you wish it to perform, no matter what
language may be used. By the end of the course, you should be able to do
- Systematically decompose complex problems into manageable pieces
- Apply logic to formulate well-structured problem solutions
- Create structured, well organized and understandable computer programs
- Debug and repair incomplete or incorrect computer programs
- Be familiar with another operating system, UNIX, and to get practice
compiling and running programs in another environment
I hope to at least cover the following topics:
- switch statement
- multi-dimensional arrays
- binary search
- Big-O notation
- call by reference vs. call by value
- classes and object-oriented programming
- Exams. There is 1 midterm. The written part will be on Tues,
April 30th. The lab practical (part of the midterm done on
the computer) will be during your lab section on Thurs, May
If you cannot be at an exam for a good reason (illness, for
then please let me know so we can make other arrangements.
The final will be cumulative. On exams, you will be responsible
for all material covered in the readings and in lectures. Exams are
open book and open notes.
- Programming assignments. Weekly programming projects
will be given to reinforce the concepts discussed in class.
Since learning to program is what this course is all about, these
assignments are the most important part of the course.
You will again be using the Visual C++ environment to write most of
your programs, though you will also be exposed to another environment --
the UNIX operating system. You'll practice both navigation and
programming skills in UNIX to get used to working in multiple
Assignments are due at the start of class on the day it is due.
You must turn in both a hard copy (on paper) and an electronic copy
(on BlackBoard) of each
assignment. Your instructor will show you how to use BlackBoard to
turn in your e-copies.
The late penalty is 10% per weekday late. Extensions are given at
the instructor's discretion. You are expected to put
in a good-faith effort on every assignment. If you do not
attempt a good-faith effort on at least 65% of the programming projects,
you will automatically fail the course, regardless of exam and lab
- Labs. You will have weekly lab exercises on
Thursdays. This will
usually consist of a short programming assignment. Feel free to ask for
help from your instructor, the lab assistant, or your fellow students.
However, the writing of the code must be your own work. I will try to
make the labs do-able in an hour's time. Each lab is worth 10 points
and will be graded as follows:
- 10 pts for successful and correct implementation of the lab
exercise within the lab section.
- 5 pts for an incomplete implementation by the end of the lab
section. You may complete the lab outside of the lab section and turn
it in within one week of the lab for full credit.
- 0 pts for an unexcused absence from the lab section. You may NOT
complete the lab outside of the lab section if you have an unexcused
absence from that lab.
I encourage you to review the lab online before coming to lab section
so you will be familiar with the task you need to perform. I'll try to
have the lab available at least a couple days in advance.
- Programming assignments: 30%
- Midterm Exam: 25%
- Final Exam: 25%
- Labs: 20%
Students often have some confusion about what might or might not be
considered "cheating" in a computer science
class. In general, you should take advantage of your instructors
and fellow students in working out
solutions to assignments. However, I also need to make sure that you are
actually learning, and not simply using all of
these resources as a crutch. As with writing a paper for an English class,
there is a point at which working together
becomes plagiarism. As a rule of thumb, feel free to discuss
general solutions to problems, but the writing down of an
actual solution must be done solo by you. For example, talking about
how one should use a for loop to solve a particular problem is
fine. Looking at someone else's code and copying what's written there
is not. If you find yourself turning in work
that looks substantially like the work of
someone else, you should seriously examine whether you have crossed
the line. If you have any doubts, talk to me
before turning in the assignment.
In all cases, you must give credit to any source
(like a written work or help from some individual) that you use to help
complete an assignment. Again, this is similar to writing an English paper;
if you use a quote or material from someone else,
you have to give credit where credit is due. Otherwise you are
inappropriately plagiarizing or borrowing ideas.
What you need to do
To prepare for class, you are required to do the following:
You are expected to be present for every class. However, I realize that
sometimes other things come up (interview, illness, etc.) so
just please let me know in advance or by phone/email if you're going to
be absent. Unexcused absences are NOT allowed and will
affect your grade. If you miss class, get notes from someone
and do the readings before coming to see me. I'm happy to
explain things, but I won't repeat lectures for you.
Read the text
You are expected to do the reading for that week before coming to
that questions you have about the material can be answered during lecture.
There will always be a time for questions about the readings or previous
lectures at the beginning of class. Take advantage of it.
You can find out what the reading is for the following week by checking
the course web page (see below). The reading assignment for the
following week will be posted by Friday evening of the current week.
Check the webpage
The reading assignments (and other announcements) will be posted regularly on
the course webpage. You are required to check it at least once a week. The
web address is at the top of this document.
Practice, practice, practice!
This is first and foremost a programming course so you'll be putting in
a lot of time writing, testing, and rewriting code. There's no
other way of getting better at it than by putting in the effort.
Make test programs out of the self-check exercises in the book,
extend the labs, or try making changes to programs discussed in class!
The Bottom Line
Ask questions and seek help. This is the most important point of all.
I live to answer questions.
It's better for everybody (you AND me) if you understand
things sooner rather than later. More often than not,
there's a line of people waiting to see me on the day before a project
is due. You'll get the help you need faster by starting on projects
sooner and coming to see me before the last minute.
Any student with a documented learning disorder is welcome to
come talk to me privately about options for completion of exams and
ESc 014 homepage