CSCI-383 OOPD
CSCI-383 Object-Oriented Programming & Design (2009 Fall) @StFX Univ.
- Instructor: Dr. Ji Ruan
- Email: jruan(use@)stfx.ca
- Office Hours: contact via email.
- Course Hours: Monday 10:15-11:00am, Wednesday 9:15-10:00am, Friday 8:15-9:00am. Location NH142 (on the top floor)
- Labs Hours: Friday 2:15PM-4:00PM, Room NHB22LAB
- Teaching assistant Mr. Conan Li, Email: cli(use@)stfx.ca
- Lecture Slides:
- Lecture 0: Outline
- Lecture 1: Thinking Object-Oriented (1) 2009/09/14
- Lecture 2: Thinking Object-Oriented (2) 2009/09/16
- Lecture 3-4: Abstraction 2009/09/18-21
- Lecture 5-7: Object-Oriented Design 2009/09/23-25-28
- Lecture 8-9: Classes and Methods 2009/09/30-10/02
- Lecture 10: Messages, Instances and Initialization. 2009/10/05
- Lecture 11: A Case Study: Eight Queens 2009/10/07
- Lecture 12: Inheritance 2009/10/09
- Lecture 13: Case Study: The Solitaire Game 2009/10/14
- Lecture 14: Subclasses and Subtypes 2009/10/16
- Lecture 15: Static and Dynamic Behavior 2009/10/19
- Mid-term exam 2009/10/23
- Lecture 16: Implications of Substitution 2009/10/26
- Lecture 17: Multiple Inheritance 2009/10/28
- Lecture 18: Polymorphism and Software Reuse 2009/10/30
- Lecture 19: Polymorphism – Overloading 2009/11/02
- Lecture 20: Polymorphism – Overriding 2009/11/04
- Lecture 21: Polymorphism – The Polymorphic Variable 2009/11/06
- Lecture 22: Polymorphism – Generics 2009/11/09
- Lecture 23: Container Classes 2009/11/13
- Lecture 24: Standard Template Library (STL) 2009/11/16
- 2009/11/18 Discussion
- Lecture 25: Software Frameworks 2009/11/20
- Lecture 26: Object Interconnections 2009/11/23
- Lecture 27: Distributed Objects (1) 2009/11/25
- Lecture 28: Distributed Objects (2) 2009/11/27
- Lecture 29: Reasoning about Multi-Agent Systems
- Lecture 30: Review 2009/12/04
- Assignments are announced in the class.
- Labs Instructions: Lab 1, Lab 2, Lab 3, Lab4, Lab5
Textbook
- Suggested: An introduction to Object-Oriented Programming, 3rd edition, by Timothy Budd, ISBN 9780201760316, Addison-Wesley. (Sample Chapter 1-7 can be downloaded from author’s book site).
- Complementary: Any C++ programming book (including electronic sources), such as
- C++ How to Program by Harvey & Paul Deitel (Any version from 4th edition is ok)
- Thinking in C++ 2nd Edition by Bruce Eckel (free download version available, and you could also pay to support the author).
Course Descriptions
The lectures present the main concepts of object-oriented analysis and programming. Topics include object-oriented approach, objects, messages; inheritance, substitution; polymorphism and software reuse. All these topics will be practiced with GNU C++ in Unix/Linux.
This course has 3 credits and a 2-hour lab/week. Prerequisite of this course is CSCI 255 (Advanced Data Structures). Students should expect to spend about 10 hours/week on the course materials.
All labs are conducted with GNU C++ in Linux. Students should be familiar with Linux and g++ as they’ve been taught in CSCI-255. Here are two links about unix/emacs and vi editor for quick reference. Also students are required to write codes in an industrial-standard style (e.g. Google style or standard by Todd Hoff). And remember, if you choose one style, be CONSISTENT with it.
Marking Scheme
- Assignments 20%
- Labs+Project 20%
- Midterm 20%
- Final Exam 40%
Weekly Topics
- 0 Outline
- 1 – 2 Introduction and Design
- 3 – 4 Classes, Methods, and Messages
- 5 – 7 Inheritance
- 8-10 Polymorphism
- 11 – 12 Advanced Topics
