This course continues the study of programming begun in CPSC 124. We switch to C++, a language widely used by professional programmers. C++ is similar to Java in many ways, but is a more complex language and offers many low-level features (such as direct manipulation of the computer's memory) that Java does not. C++ also removes some of the automatic checks and "safety belts" that Java provides.
The goal of this course is to build on your skills as a programmer, by reviewing and extending object-oriented programming concepts from CPSC 124 (including classes, inheritance, and polymorphism) and by adding new language features (including pointers, reference parameters, operator overloading, and templates), new algorithmic techniques (recursion), and new data structures (including linked lists, stacks, queues, trees, and, time permitting, the standard template library). Continued attention will also be given to "how to think like a programmer" - that is, the fundamental logical thinking and problem-solving skills which are independent of the particular language being used.
M 2:30-3:45pm, T 3:30-5pm, R 10:15-11:30am, F
Liane Gray: Sun 6-9pm, Lansing 310
|Class Hours and Meeting Place||
Lecture MWF 10:10-11:05am, Lansing 300
(general information about the course, including assessment)
(course policies on attendance, collaboration, late/makeup work, and other things)
(syllabus, including links to handouts, assignments, reading material...pretty much everything you want on a daily basis is here)
(the C++ programming style/conventions used and expected in this class)
(lots of useful information about the Linux systems at HWS)
[11/9] Due to a department talk at 4pm, Thursday's review session has been moved to 5pm.
[11/4] I will not be in on Tuesday 11/8 (and there will not be office hours that day). I will check email periodically throughout the day, however.
[11/2] If you are using the provided priority queue for the maze solver, copy the revised priorityqueue.o file from /classes/f05/cs225/hw56sol. The originally-provided one doesn't contain the PQListNode implementation and will result in linker errors.
[10/31] Homeworks #8 and #9 have been posted on the syllabus page. These are really two parts of the same assignment (though will be counted as two assignments). While both are probably shorter than earlier homeworks, homework #8 is particularly so. Both have been posted now so that you can get a head start on homework #9 if you wish since it overlaps with midterm #2.
[10/25] Solutions for the first midterm have been posted on the syllabus page.
[10/17] Due to scheduling conflicts, the Thursday evening CS tutor hours have been discontinued. They may restart in November, perhaps at a different time - let me know if you have preferences.
[10/10] Information about the final project has been added to the syllabus page. This is a group project (teams of two), so the first step is to email me by Monday 10/17 with your preferences about who you do or don't want to work with. I will assign groups based on this information.
[10/7] If you wish to redo part or all of exam #1 in order to improve your score, you must turn in your original exam along with your new solutions by class time on Monday, 10/17. You may attempt the bonuses, but they will not count towards your new score. The rules:
Collaboration and references: You may consult ONLY your copy of the course textbook, your own class notes, and the examples on the course web page. You may NOT talk to any other person (student or tutor) or use any other reference material.
Clarifications: You may ask me for clarifications on what a question is asking you to do.
Use of a computer: You may use a computer if you wish to test your solutions for #3, #4, and #5. You may use a computer if you wish to test your solution for #2, but to get credit, you MUST trace the execution by hand and show your work (use a series of drawings with boxes, like the examples we do when tracing things in class). You may NOT use a computer for #7.
In short, 1/3 of the additional points earned will be added to your old
The detailed formula:
points gained (out of 70) = [new points (out of 70) - old points (out of 70)]/3
percent gained (out of 100) = (points gained)/70*100
new score (out of 100) = old score (out of 100) + points gained
Note that it is possible (though not expected) for your new score to be lower than your old score, if you score worse on the redone exam than on the original exam.
[9/26] Review session 4:30pm Thursday 9/29. Let me know ASAP if you have conflicts.
[9/26] Review information for midterm #1 has been posted on the syllabus page.
[9/26] Additional tutor hours are now available Thursdays 7-10pm, in addition to the Sunday hours (6-9pm) already available.
[9/25] Partial solutions for homework #1 have been posted on the syllabus page. Partial solutions for homework #2 (and subsequent homeworks) will be added when all assignments have been handed in, or 10 days after the due date (when, according to the late policy, 100% of the assignment's score has been lost to late penalties).
[9/21] The handout for homework #3 has been updated with information on how to set up emacs so that you can compile within emacs with just a single keystroke.
[9/20] The topic for Friday's class (9/23) has been changed on the syllabus, but this doesn't affect the readings.
[9/19] Office hours on Tuesday 9/20 will be from 2:30-4pm, due to a department meeting.
[9/9] A tutor is available Sunday evenings 6-9pm in Lansing 310. Remember the collaboration policy: You may work with other students (or a tutor) on homeworks, but you must (a) acknowledge, in writing on the assignment, who helped you and how, (b) fully understand the help you receive (could you explain it to someone else?), and (c) write up the actual solution in your own words, on your own. This includes debugging help.
[9/8] Department picnic! Tuesday 9/20 at 5pm in the Lansing-Rosenberg-Eaton Quad, to be followed by a showing of all three Wallace & Gromit short features on the big screen in Albright Auditorium. (Rain location: Albright lobby.) All majors, minors, and wannabes are invited!
[9/8] Department search: The Math/CS department is still looking to hire a new faculty member in computer science. Students play an important role in the selection process. We are currently looking for students to be on the search committee, which entails (at a minimum) coming to candidates' talks and meeting with candidates when they visit campus. If you are or are thinking about majoring/minoring in CS, then you have a vested interest in who gets hired since you'll most likely be taking classes from them - so participate in the process! If you are interested in participating, please let me or Professor Mitchell know. Note that candidates won't be visiting campus until January/February, so this isn't something you have to fit into your schedule this semester.
[9/4] Office hours on Monday 9/5 will be 1:45-3pm instead of the usual time, because of a meeting I need to attend.
[8/31] The netpay example from class has been posted on the syllabus page. All class examples (and sometimes additional examples) will be posted there.
[8/29] Homework #0: Two tasks -
Make sure that you have an account on the department Linux machines, can remember your password, and can login successfully. Inform me of any problems by Wednesday 8/31.
Send me (email@example.com) an email telling me the following:
[8/29] There will be no office hours Friday 9/9 through Thursday 9/15. (I'll be away at a conference.)
[8/29] Welcome to CPSC 225! This web page is your source for a great deal of important and useful material, so you should take a few minutes to familiarize yourself with the website. Check back often for announcements and new information.