Netbeans Eclipse Qt Java
College of Engineering Aeronautics and Astronautics Agricultural and Biological Engineering Biomedical Engineering Chemical Engineering Civil Engineering Construction Engineering and Management Electrical and Computer Engineering Engineering Education Engineering Professional Education Environmental and Ecological Engineering Industrial Engineering Materials Engineering Mechanical Engineering Nuclear Engineering
EPICS (Engineering Projects In Community Service) First-Year Engineering Program First-Year Engineering Honors Program Global Engineering Program Minority Engineering Program Professional Practice (Co-Op) Program Women in Engineering Program
College Administration Schools Programs All Groups All People ECN Webmail
Purdue Home

ECE 462 Object-Oriented Programming using C++ and Java

Fall 2008 

If you are taking this class, please enter Blackboard to submit your assignments, check your grades, and join the discussion. 

[outcomes | tools | lectures | assignments | lab exercises | examstextbook | Rhea | optional readings | changes in 2008 | students' comments ]

Your Feedback

Project Demonstration

Course Outcomes:

A student who successfully fulfills the course requirements will have demonstrated:

  1. an ability to write object-oriented programs of moderate complexity in Java. [3,4;e]
  2. an ability to write object-oriented programs of moderate complexity in C++. [3,4;e]
  3. an understanding of the concepts of inheritance and polymorphism. [3,4;k]
  4. an ability to use template classes and the STL library in C++ and Java. [3,4;k]
  5. an ability to overload operators in C++. [4;c,e,k]
  6. an ability to incorporate exception handling in object-oriented programs. [3,4;k]
  7. an understanding of the difference between function overloading and function overriding. [3,4;k]
  8. an ability to write programs with multiple threads and use synchronization among threads. [3,4,k]

Suggestions to Students:

Learning by watching on-line videos (also called "asynchronous learning") has unique challenges. The lectures may move faster than your own pace, because you cannot stop the instructor and ask questions. Meanwhile, there are many advantages, for example, you can pause or review. Here are some suggestions to learn more effectively.

  1. Scan the slides before watching a video.
  2. Have the slides and code in front of you while watching the video.
  3. Pause when necessary.
  4. Keep the schedule. Do not procrastinate.


Tools:Netbeans eclipse  Qt Java 3D DDD


LE = lab exercise, PA = programming assignment

The instructor is available in MSEE 190 software laboratory during the lecture hours, three times a week. Student can use the lecture hours for programming assignments, lab exercises, discussion, or asking questions. Additional office hours can be arranged by email. There are three lecture hours per week. Two are used for video instructions and one is used for lab exercises. The experiment conducted in 2007 indicated that this approach did not reduce the coverage of the course materials. If fact, due to the personalized help, students learned more and faster.

The slides contain bookmarks. To show the bookmarks, in Adobe Reader, select  "View", "Navigation Tabs", and "Bookmarks'.  The slides are mostly screenshots of the videos. It is recommended that you read the slides before printing. Many slides are used to explain how to set up your programming environment. They are not needed once you have finished the setup. If you do want to print, please print 4 slides on the same page to save paper.

The source code used in each lecture is available separately. You are encouraged to print and study the source code.

There are practice questions at the end of each video clip.


Week Date Due Date* Slides Reading Code


1 08/25  - Slides 1 - Introduction
08/27  - Slides 2-3.3


Object and Class (5:43)

Inheritance and Polymorphism (10:45)

Development Environment (17:32)

Lab Exercise 1 (14:02)

08/29 - 3.4-3.9  Lab (MSEE 190)
2 09/01 no class
09/03 LE 01 Slides 3.10-3.12


Program Structure (14:09)

Class Examples (4:32)

Encapsulation and Polymorphism (16:12)

Constructor and Destructor (17:34)

09/05 - Slides 3.13-3.16


Version Control (8:28)

Instantiation (17:31)

Submission Procedure (8:23)

Inheritance (6:52)

Lab Exercise 2 (8:59)

3 09/08  - Slides 17.8-17.12 Code

User Interface (14:22)

Qt Signals and Slots (17:45)

Java Events and Handler (9:47)

Array (11:27)

09/10 LE02 Slides 5-5.2 Code

Container (21:57)

Collision Detection (16:57)

New Container in C++ (12:24)

09/12 -      17.13-17.17  Lab (MSEE 190)
4 09/15  - Slides 6-6.9 Code

Open and Save File (21:36)

Definition, Declaration, and Initialization (17:23)

Lab Exercise 3 (15:57)

09/17 LE03 Slides 7-8.5 Code

Reference (4:38)

Parameter Passing (8:23)

Copy Constructor (14:41)

Parameter Passing 2 (6:00)

Overload Resolution (15:01)

09/19 PA1 Java Breakout -      9-9.13  Lab (MSEE 190)
09/22 review at ARMS 1109 (bring your questions, no lecture)
09/24 Exam 1  (outcomes 3,4)
09/26  - Slides 12-12.11 Code

Operator Overloading (24:10)

Small Int and Conversion (24:30)
09/29  - Slides 10-10.7 Code

Lab Exercise 4 (1:24)

Programming Assignment 03 (4:47)

Exception Handling in C++ (16:22)

Exception Handling in Java (10:18)

Static Member in C++ (9:10)
10/01 LE04 Slides  11-11.14 Code

Static Member in Java (9:28)

Game Programming (6:28)

Full Screen Game (28:18)

Lab Exercise 5 (7:38)

10/03 Lab (MSEE 190)
10/06  - Slides  14-14.6  -

Double Buffering (20:46)

Sprite (4:13)

Unified Modeling Language (UML) (22:19)

10/08 LE05 Slides  15-15.18 Code

Inheritance (21:51)

Virtual Function (11:32)

Private Inheritance (9:16)

Java Final (3:36)

Lab Exercise 6 (5:34)

10/10 PA2 C++ Breakout     Lab (MSEE 190)
10/13 No Class
10/15 LE06 Slides  16-16.7 Code

Java Key Input (15:09)

Java Mouse Input (6:59)

Multiple Inheritance in C++ (17:40)

Qt Layouts (9:33)

10/17 review at ARMS 1109 (bring your questions, no lecture)
10/20 Exam 2  (outcomes 5,6)
10/22 - Slides - Code

Sound (7:50)

Performance Profiling (17:40)

C++ Profiling (3:52)

Performance Improvement (18:04)

10/24 Lab (MSEE 190) 
10/27  - Slides  18-18.3 Code

Parallelism (14:43)

Thread (21:17) WMV format  RM format

Parallel Programs (14:47)

10/29 LE07 Slides  18.4-18.11 Code

Scheduling (18:40) WMV format

Synchronization (23:01)

Lab Exercise 9 (10:20)

10/31 PA3 Java Tetrix   Lab (MSEE 190)
11/03  - Slides Code

Design Parallel Programs (19:31)

Deadlock (15:38)

Thread Performance (11:13)

Platform Game (5:43)

11/05 LE08 Slides 19-19.4  Code

Draw Game (6:08)

Network Client (17:32)

Network Server (20:38)

Test Coverage (6:34)

11/07 review at ARMS 1109 (bring your questions, no lecture)
11/10 Exam 3  (outcomes 7,8)
11/12 LE09 Slides - -

Software Test I (12:34)

Software Test II (13:06)

Automatic Testing (9:52)

3D Graphics (12:05)

11/14 PA4 C++ Pacman  Lab (MSEE 190)
11/17 - - - Discussion "Education and Technology"
11/19 LE10 Slides - Code

Multi-Player Game using Network (16:01)

Game Client (15:26)

Game Server (8:10)

Improvement (5:10)

Java Remote Method Invocation (7:41)

11/21 Lab (MSEE 190)
11/24  - Slides - Code

Brief History of C++ (20:15)

Brief History of Java (10:11)

RMI Example (9:19)

Ray Tracing (10:19)
11/26 No Class
11/28 No Class
12/01 review at ARMS 1109 (bring your questions, no lecture)
12/03 Exam 4
12/05 PA5   Lab (MSEE 190)
12/08 - Slides - -

Reuse Threads (12:23)

Ray Tracer (8:43)

Problem with Threads (6:15)

12/10 game demonstration at MSEE 190    
12/12 review at ARMS 1109 (bring your questions, no lecture)
17 12/18 Final Exam 8-10AM, Physics 116 and 117

* All due dates are suggested deadlines. The flexibility is provided to accommodate your schedule (such as interviews or conferences) and unexpected situations (such as illness or accidents). The deadline for all assignments and lab exercises is 6PM December 5 Friday. A grace period of 6 hours is given to all students. You can submit and resubmit assignments or lab exercises during this grace period without any penalty. All assignments and lab exercises must be submitted before 11:59PM December 5. This is the  absolute deadline. After 11:59PM December 5, 10% is taken every hour (round up) from your grade. Nothing will be accepted after 10AM December 6.

Please remember that you are not allowed to request regrading if you submit a lab exercise or a programming assignment after the suggested deadline.

Programming Assignments and Due Dates:

Submission Procedure and Rules

Rules on Collaboration

  1. 2008/09/19, Two-player Breakout game using Java (outcome 1)
  2. 2008/10/10, Two-player Breakout game using C++ and Qt (outcome 2)
  3. 2008/10/31, Tetrix game using Java (modified from C++ and Qt Tetrix game), slides, video (4:47) (outcome 1)
  4. 2008/11/14, Pacman game using C++ and Qt (improve a simplified Java example) (outcome 2)
  5. 2008/12/05, Interactive 2-player network game using Java or C++ (design your own own game)

A student can do each assignment alone or work with another (and only one) student that is also taking the class. A student can have different teammates for different assignments. If two students work together, both students have to submit the assignment. Outcome 1 can be passed by assignment 1 or 3. Outcome 2 can be passed by assignment 2 or 4.

Laboratory Exercises and Due Dates:

Every student must submit the lab exercises independently. Collaboration is not allowed.

  1. 2008/09/03, (Java) Netbeans programming interface, version control, drawing and handling events. slides, video (14:02), code.
  2. 2008/09/10, (Java) Tracking mouse movement and bouncing ball. slides, video (8:59), code.
  3. 2008/09/17, (C++) Qt graphical user interface: drawing and handling events. slides, video (15:57), code.
  4. 2008/10/01, (Java) Unified Modeling Language using Netbeans. slides, video (1:24).
  5. 2008/10/08, (Java and C++) Container classes' performance. slides, video (7:38), code.
  6. 2008/10/15, (Java) Applet. applet, slides, video (5:34), code.
  7. 2008/10/29, (Java and C++) Multithread, convert C++ to Java. lab07.cpp.
  8. 2008/11/05, (Java and C++) Multithread, convert Java to C++. lab08.java.
  9. 2008/11/12, (Java and C++) Networking. slides, video (10:20), code.
  10. 2008/11/19, (Java or C++) Profile and Coverage.

Exam Dates:

  1. 2008/09/24, Exam 1
  2. 2008/10/20, Exam 2
  3. 2008/11/10, Exam 3
  4. 2008/12/03, Exam 4
  5. 2008/12/18, 8-10AM, Physics 116 and 117, Final Exam

All exams are open-book and open-note. Please bring your Purdue ID. No electronic device (including calculators) is allowed. Exams from 2007.

Textbook:   Programming with Objects Wiley-IEEE Press


Developing Games in JavaDeveloping Games in Java  Effective C++ Effective C++

Rhea Project

Purdue ECE Rhea Project: multidimensional, multimedia, self-adaptive, collective learning tool.

Optional Readings

 These readings are optional. They will not appear in any exam. You can download the PDF files from any Purdue computer.

  1. A History of C++ 1979-1991
  2. Evolving a Language In and For the Real World: C++ 1991-2006
  3. Problems with Threads
  4. Programming Languages: Past, Present, and Future
  5. End-to-End Arguments in System Design
  6. Using Redundancy to Find Errors
  7. An investigation of the Therac-25 Accidents
  8. Innovation and Education in the Digital Age: Reconciling the Roles of Pedagogy, Technology, and the Business of Learning

Changes in 2008 

  1. The lectures, assignments, and lab exercises will be recorded in separate videos.
  2. On-line homework will be eliminated. The questions will be embedded in the lectures as self tests.
  3. The lab exercises will be more closely integrated with the programming assignments.

Bacause of the postive responses from the students in Fall 2007, ECE 462 will continue the format using on-line lectures. The instructor will be available in the laboratory working with students during the lecture hours. All programming assignments will be developing computer games.

Student Comments

These are some comments from students' evaluations after taking ECE 462 in Fall 2008.

  • "I enjoyed this course."
  • "The game projects are incredibly refreshing..."
  • "This course was a definite benefit. I think that all CompE students should take it... The course's structure is great."
  • "Great course and a must for anybody looking to go into software after they graduate."
  • "Course is fantastic! I feel this is a really important course before entering the CompE working world."
  • "He did a very good job teaching this course."
  • "Professor Lu is great--very knowledgeable as well as approachable."
  • "Professor Lu does a great job and is very helpful..."
  • "Thumbs up."
  • "Very helpful, really wants to and does help students who seek it."
  • "Professor Lu is very helpful and dedicated."
  • "Great teacher, tries really hard to help students, very helpful."
  • "The professor is very enthusiastic and extremely diligent in helping his students succeed. Very pleased. I got my education worth from this course."

Back to OOSD