600.109: Introduction to Programming in C++
Syllabus -- Spring 2004


Lectures: Mon, Tue, Wed 3-3:50p -- Shaffer 3

Instructor: Dr. Joanne Houlahan
Office: New Engineering Building, Room 224, (410)516-4117
E-mail: houlahan AT cs.jhu.edu

Course Web Page: http://www.cs.jhu.edu/~houlahan/cs109
This is a VERY important source of course information and must be checked regularly!!

Required Text: Forouzan & Gilberg, "Computer Science, A Structured Approach Using C++", Thomson-Brooks/Cole, 2nd edition, 2004.
Weekly reading and exercises will be assigned from this text. Supplemental handouts will be distributed in class and/or on the webpage. If you have a different text you will need to jump around to find coverage of our topics, and you may be missing some material. This new text was chosen to provide better instructional and reference material than the previous one, based on course surveys.

Course Objectives: 1) Learn the basic concepts and principles of structured programming and object oriented programming. 2) Learn to implement programming techniques to solve problems in the C++ programming language.

Course Topics: I plan to cover basic concepts and techniques for programming, including variables, control structures (decision and looping), function writing, simple class design and usage, and basic data structures. We will cover most of the text, with the exception of Chapters 13, 15, and 16. Parts of these chapters might be covered if time permits. You are welcome to read them on your own. The remaining chapters will be covered primarily in order, as detailed in the schedule below. Minor updates will occur as the course progresses.

Grading: Your final grade will be determined by the weighted average of your grades based on the following breakdown:

weekly programming assignments 25%
test1, Chapters 1-5, Mar 225%
test2, Chapters 6-9, Apr 625%
test3, Chapters 10-12, 14 & 17, May 425%

Each programming assignment will be assigned a point value based on its level of difficulty and anticipated completion time. Your grade will be based not only on correctness, but also on style and good programming techniques. NO CREDIT WILL BE GIVEN FOR PROGRAMS THAT DO NOT COMPILE! NO CREDIT WILL BE GIVEN FOR LATE ASSIGNMENTS! If a program is not working perfectly by the due date, turn it in as is with detailed comments as to which parts are complete, and which are not. (Remember: It must compile!) Include pseudocode (as comments) for incomplete parts. Exceptions for illness will be given only by Dr. Houlahan (not by any TA/CAs). Exceptions for poor planning or heavy workloads will NOT be given because solutions will often be posted shortly after an assignment is due.

Test dates and content are tentative and subject to change with advance notice. All tests are necessarily cumulative. Letter grades for the course will be subject to my evaluation of your overall class performance. Do not expect grades to be curved. Please keep your own record of your grades so that you will know your standing in the course and can double-check my records. Expect to spend 8-12 hours per week outside of class.

Assignment Logistics/Computer Use: Your validated J-card gives you access to the Homewood Computing Lab in Kreiger 160. CAs for the course will be available there for hands-on help (hours to be announced). You must obtain an JHUNIX Unix account for submitting homework in this course. Go to the HITS Account Setup Web Page (http://jhed.jhmi.edu/cabs) to activate this account. All Homewood students are entitled to one. Non-homewood students must get a letter from me in order to obtain an account. You will not be given access to the Computer Science Department Lab for this course. Printed copies of all related program files are to be turned in, together with an electronic copy of the source files via our automatic submission program on jhunix. You must keep a back-up copy of every program you submit.

Attendance: You are expected to attend and actively participate in all class sessions. Inevitably, students who do not attend regularly do poorly on tests and assignments. You are responsible for all material presented while you are absent. If you have trouble or need extra help, don't hesitate to contact a course teaching assistant (CA or TA) or me. Please don't wait until you're hopelessly behind.

Collaboration: The only group work in this course will be problems solved during lectures. You must abide by the Computer Science Academic Integrity Code (below, and at www.cs.jhu.edu/integrity.html), as well as the JHU's Ethics Code.

All items in this syllabus are subject to change to correct errors or if there is unanimous agreement that a change is desirable.


Course Schedule

Week 1 1/31-2/2 Ch 1 & 2: What is programming, data types, variables, constants, output.
Week 2 2/7-2/9 Ch 2 & 3: Input, expressions, arithmetic.
Week 3 2/14-2/16 Ch 4: Using and defining functions, program design.
Week 4 2/21-2/23 Ch 5: Booleans and control structures: if, if/else, switch, nesting.
Week 5 2/28-3/2 Ch 6: Repetition: while, for, do-while. Test 1 (Wed) on Chapters 1-5
Week 6 3/7-3/9 Ch 6: Loop practice, nested loops, recursion.
Week 7 3/21-3/23 Ch 7: Text files. Ch 8: Arrays (1 & 2D)
Week 8 3/28-3/30 Ch 8: Array algorithms - sorting and searching, analyzing performance. Ch 9: Pointers.
Week 9 4/4-4/6 Ch 14: Strings. Test 2 (Wed) on Chapters 6-9.
Week 10 4/11-4/13 Ch 10: Basic classes - designing and defining.
Week 11 4/18-4/20 Ch 11: More classes.
Week 12 4/25-4/27 Ch 17: Linked lists.
Week 13 5/2-5/4 Ch 12: Simple inheritance. Review and wrap-up. Test 3 (Wed) on Chapters 10-11, 14 & 17.


Computer Science Academic Integrity Code

The strength of the university depends on academic and personal integrity. In your studies, you must be honest and truthful. Ethical violations include cheating on exams, plagiarism, reuse of assignments, improper use of the Internet and electronic devices, unauthorized collaboration, alteration of graded assignments, forgery and falsification, lying, facilitating academic dishonesty, and unfair competition.

Academic honesty is required in all work you submit to be graded. Except where the instructor specifies group work, you must solve all homework and programming assignments without the help of others. For example, you must not look at any other solutions (including program code) to your homework problems or similar problems. However, you may discuss assignment specifications with others to be sure you understand what is required by the assignment.

If your instructor permits using fragments of source code from outside sources, such as your textbook or on-line resources, you must properly cite the source. Not citing it constitutes plagiarism. Similarly, your group projects must list everyone who participated. Falsifying program output or results is prohibited.

Your instructor is free to override parts of this policy for particular assignments. To protect yourself: (1) Ask the instructor if you are not sure what is permissible. (2) Seek help from the instructor or TA, as you are always encouraged to do, rather than from other students. (3) Cite any questionable sources of help you may have received.

Students who cheat will suffer a serious course grade penalty in addition to being reported to university officials. You must abide by JHU's Ethics Code: Report any violations you witness to the instructor. You may consult the associate dean of students and/or the chairman of the Ethics Board beforehand. For more information, see the guide on Academic Ethics for Undergraduates (http://www.advising.jhu.edu/ethics.html) and the Ethics Board web site (http://ethics.jhu.edu).


Return to the CS 109 Homepage