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 2 | 25% |
| test2, Chapters 6-9, Apr 6 | 25% |
| test3, Chapters 10-12, 14 & 17, May 4 | 25% |
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.
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).
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.
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.