Text: Programming in C++ (3rd Ed), by Dale & Weems, Jones and Bartlett, 2004.
Preamble: Programming. There seems to be no end of the urgent need for more and more
people to know how to script, how to write software, how to program.
Mobile phones, palm-tops, video-cams, and desktop computers need software to do the things they do.
This course is about learning how to program and how to do it well. We use the programming
language C++ because we feel it is still the backbone of the industry and
offers a full range of rigor and elegance. Glad you are on board; like riding a bike,
once you learn to program, you'll never forget. Let's code....
Content: Problem-solving techniques and algorithm development with emphasis on
elementary objects, software reuse, and numerical methods. Topics covered include
abstraction, design and decomposition, C++ syntax,
elementary data structures of arrays and records and how a solid understanding of these features
are the building blocks of user-defined classes of objects.
assignments and in-class labs emphasize the physical limitations of problem-solving-machines
as well as techniques to write programs that are both safe and correct.
Curriculum: The course follows the "imperative-first approach" as defined in the new
ACM/IEEE-CS Joint Curriculum Task Force, Computing Curricula 2001.
Using the ACM numbering convention, this course is the entry level
CS111 (traditionally CS1) computer science course
for all majors and minors, although at Wheaton an increasing number of students have previously
taken another introductory course in computing. The use of predefined objects will be highlighted
throughout the course; however, the emphasis is on learning to write safe and efficient software,
the heart of every good object. We have retained
a number of breadth-first recommendations from Computing Curricula 1991, including:
- integration of theory with practice:
At present, our emphasis on theory has focused primarily on the subareas of logic,
computer organization, object-oriented programming and in particular,
introductory numerical methods. Mathematical computing is a constant theme
throughout the semester. OOP is currently introduced from a client-perspective,
that is, C++ classes are provided for the students but they do not begin to write
their own classes until the second course (CS112, traditionally CS2).
Specific portions of each lab are spent introducing
and experimenting with introductory elementary numerical methods, for example:
arithmetic overflow and truncation errors introduced in series approximations.
The theoretical rigor we try to instill in each of our students is summarized as follows:
In computer science, if you are almost correct you are a liability.
Fred Kollett (1941-1997), MathCS, Wheaton College
- a broad view of the subdisciplines of computing:
Currently, six programming assignments feature some of the various knowledge areas of the
discipline. A complete list of assignment topics is given below.
web pages provide in-depth study of an ethical issue in computing of their choice.
This multi-step project exposes students to writing instruction in our discipline and a level of scholarly research
typically not experienced at the introductory level.
- weekly hands-on labs:
Since 1987, this instructor has included a laboratory component in the CS1 course.
From the outset it was clear that computer science is a hands-on activity and is not
unlike the traditional laboratory sciences (biology, chemistry, physics) where hypothesis
generation and experimentation are necessary ingredients in the learning process.
- topics featured in-depth:
In addition to introductory numerical methods that appear throughout the semester, this
semester we focus on applications that could be ported to mobile devices. Significant
attention will be paid to some of the basic considerations
of developing software for the ever-increasing
number of "smart appliances", including console size, memory footprint, and efficiency.
[Sept] [Oct] [Nov] [Dec]
|Things to do
|12 Labs ||12% ||almost weekly
|6 Programs ||40% ||TBA
|10 Quizzes ||25% ||almost weekly
|Final Exam ||15% ||TBA
|Web page ||8% ||continual through semester
Programming (Homework) Assignments (tentative plan)
a1 - The realities of small mobile devices -- Series approximations
a2 - Remote data collection with mobile devices -- Linear Regression
a3 - Not Very Good Privacy (NVGP) -- Encryption
a4 - e(x) please -- Writing Mathematical Libraries
a5 - Can I Scan Your Head? -- Informational Retrieval
a6 - Scanning Your Head (Part II) -- Software Engineering
Any work (labs or homework) handed in late will not be accepted. All electronic submissions are to be dropped to the appropriate dropbox. In addition, for all programming assignments, a laser-printed, stapled hardcopy of your program must be handed in to the instructor by the morning following the due date.
[Sept] [Oct] [Nov] [Dec]
*The numerical methods theme appears throughout the course.
|* ||Ch. 1 ||Introduction to Computing (history, ethical issues, hardware, moving around our local network and beyond)
|***** ||Ch. 2 ||Program Development (design, coding, verification, maintenance)
|*** ||Ch. 3 ||Computing with Simple Objects (numeric expressions, input-output)
|****** ||Ch. 3 ||Libraries (formulas, computing with class libraries)
|******* ||Ch. 4 ||The software design process
|**** ||Ch. 5 & 6 ||Selectional and Repetitional Control
(if-else, switch, while, for)
|******** ||Ch. 7 & 8 ||Functions in Depth (pass-by-value, pass-by-reference, inline functions), scope
|********* ||Ch. 12 ||One- and Two-dimensional Arrays (strings, matrices)
|********* ||Ch. 11 ||Structured Data and an introduction to Classes (user-defined types, classes, structs)
|********* ||notes ||numerical methods and the rules of safe programming *
Exact page numbers to read appear on the schedule (e.g., Sept); any updates will be given in lecture.
Honor Code Revisited: It goes without saying that all submitted work will be the student's own, in keeping with the Wheaton Honor Code. For labs, you may get help from fellow classmates, but remember that all submitted work must be your own. For homework, the programs must be your own from beginning to end. On the quizzes, you may not get help from anyone but the instructor.
(0) It is expected that you spend at least 2-3 hours on reading and practice problems for every 50 minutes of lecture. This computes to at least 6-9 hours of work in the C++ text per week. This should be done throughout the semester and not just when studying for quizzes. The material is cumulative in a big way; for example, week 5 depends heavily on weeks 1 through 4.
(1) I t is expected that you spend at least 4-6 hours per week on your current programming assignment. WARNING: Programmers typically underestimate the time it takes to complete a software project; 4-6 hours per week on your programming assignment may be one of those "underestimations."
(0) The labs are a critical part of the course. In almost all cases, the current lab will be preparing you for the current programming assignment. That is, if you complete and understand the lab, you should be well on your way to a solution for the programming assignment.
(1) In order to best grasp the material in some labs, I strongly suggest that you completely redo any labs that you find difficult. (Read that last sentence again, unless of course you've already reread it once).
Rather than exams spaced evenly over the semester, you will be quizzed on a weekly basis. Each quiz may address material that has been assigned in the text, but not yet presented by the instructor. NOTE: you'll have to have read the material and practice the sample problems BEFORE coming to class to take the quiz. Quizzes start at the beginning of a lecture (see schedule) and last approximately 10-15 minutes. After some quizzes, immediate (peer) grading will be followed by a lecture/discussion which will focus on the concepts in the quiz.
(0) There will be no makeups, nor will the lowest quiz be dropped. If you are an athlete and/or you have a conflict with a quiz date, please see me within the first week of classes.
(1) When studying for quizzes, have someone pick problems from the notes and text, mix them up, and present them to you as if you were taking a quiz (not telling you from what section a problem comes). While practicing, do not peek at the textbook or an earlier solution. NOTE: it's easy to "read" code; its much more difficulty to "write" code from scratch. Quizzes will ask you to "write" code from scratch; practice ownership of the concepts!
I have listed my office hours on the syllabus. As you'll soon know, I am often available at other times. Scheduling a "quick" appointment is best handled when you reach me by phone: for example, "Professor LeBlanc, I'm really stuck. Can I stop by sometime in the next hour or so?" (However, do not leave a voice mail and ask me to return your call, unless it is urgent).
Please don't wait too long before you see me; a quick chat in my office can often clear things up.
I'm here alot...
[Sept] [Oct] [Nov] [Dec]