Intermediate Computer Programming
|Professor:||Thomas C. Bressoud||Phone:||587-5630|
|Office Hours:||See Bressoud Spring Schedule||Mailbox:||Olin 201|
|Final Exam:||C: Friday May 5, 9:00-11:00|
In this course, you will study intermediate level computer programming principles and techniques to complement the mathematical content in CS 174. Students are often expected to implement algorithms based on principles covered in CS 174. Specific course topics include recursion, sorting, dynamic memory allocation, basic data structures, software engineering principles, and modularization. The laboratory techniques developed in this course will be used repeatedly throughout later courses in the major.
Methodology and Goals
The "jumping off point" of this course is the set of fundamental programming skills you acquired in CS 171. The use of both a new platform (Linux) and a new programming language (C++) will enable you to generalize from your 171 experience and build upon it. The focus of the course is not, however, on the platform or on the language, but on programming principles and practices that will give you a strong foundation for future courses in Computer Science. Software development will become more disciplined through many lab and programming projects. A unifying theme in this course is the Abstract Data Type, a formal specification of a logical object containing both data and operations on this data. The end goals of this course include a much deeper proficiency in a programming language, software engineering practice to give you confidence and process in developing programs, and using object techniques to realize implementations of abstractions.
- C++ Plus Data Structures, Third Edition by Nell Dale
- C++ Language Fundamentals: A Laboratory Course by Nell Dale
- An Introduction to Linux at Denison by Jessen Havill
The first two of these are available as a bundle along with a note taking workbook at the bookstore. The third is available as a PDF and can be printed or read online.
Supplemental C++ Reference Book
Many students feel more comfortable having a textbook on C++ to use to help learn the language and to use in the future as a reference book, as C++ will be the primary programming language for most of the Computer Science courses in the department. There are many C++ books to choose from, but here are a few that I would recommend:
- C++ Primer Plus 5th ed. by Stephen Prata, SAMS publishing.
The fourth edition is available online at http://safariuportal.oreilly.com
- C++: How to Program by Deitel & Deitel
- Starting Out with C++ by Tony Gaddis
- C++ For Java Programmers by Timothy Budd
- C++: The Complete Reference by Herbert Schildt
|Midterm Tests (3):||40%|
Course Web Page
A web page will be maintained for this course. The web page will include the schedule for the course, all reading assignments, programming assignments, example programs, and other useful information, including announcements to the class. I expect you to check the web page regularly.
Policies and Student Responsibilities
Participation and AttendanceIn general, we would like everyone to do their part to make this an enjoyable interactive experience. Hence in addition to attending class, we would like you to actively participate by asking questions, joining in our discussions, etc. Note that there is a significant portion of your grade attributed to class participation. Any day that you do not attend class, you (by definition) do not participate, and so be very careful about missing class, as it will affect your grade.
Your attendance is expected at each class meeting. Through the class participation portion of the grade, I will reduce your grade for absences. Up to 3 excused absences will be tolerated without affecting your grade. Such absences should be communicated to me in advance.
Readings and In-class Material
You are responsible for the content of reading assignments, lectures and handouts, as well as announcements and schedule changes made in class, whether or not you are present. If you must miss a class, you are responsible to get what you missed.
It is very important that you keep up with the assigned reading. Read your book on a daily basis. Be especially sure to read the material in the appropriate chapter before coming to class so you will be ready to ask questions. All reading assignments are listed on the class web page. The material in the course is, by necessity, cumulative. Be warned that if you fall behind, you will not be able to catch up easily.
Exams will be given in class on the day scheduled and may not be made up. On rare occasions, and with a Univeristy sanctioned excuse, I may allow an exam to be taken in advance. See me as early as possible to discuss this.
There will be a number of written and programming assignments given during the semester which will be due in class on the date specified. No late homework assignments will be accepted, unless arrangements have been made with me well in advance. Since it will most likely not be obvious how long an assignment might take, you are well advised to start early. Like other classes at Denison, it is expected that you devote at least 3 hours to these assignments for each hour of class time. Homework assignments must be typed.
You may discuss homework problems with other students in the class, but written (and typed) work must be your own. In other words, you may talk about homework problems with your peers, but when it comes time to write your solutions, you are on your own. You may have general conversations about problem strategies, but you must leave these conversations without having written anything down. Keep in mind that it is quite easy for me to tell when two students have been working too closely. In such cases, I am obliged to report the instance to the Associate Provost. You may not get help from students outside the class. If you have questions, ask the lab assistants, or come see me and I will be happy to help. You are also quite welcome to send me e-mail or call if you would like to discuss an assignment.
- Programming in C++
- Using the Linux Operating System
- Software Engineering Principles
- Abstract Data Types (ADTs)
- List, Set, Stack, and Queue ADTs
- Binary Tree ADT (if time permits)
- Pointers and Linked Lists
- Sorting Algorithms
- Introduction to Algorithm Analysis
Any student who thinks he or she may need an accommodation based on the impact of a disability should contact me privately as soon as possible to discuss your specific needs. I rely on the Office of Academic Support in Doane 104 to verify the need for reasonable accommodation based on documentation on file in their office.
Have a great semester! If you need anything, please let me know.