Fall 2021

Course Instructor

Dr. James Yu 余剑峤

Course Description

The course aims to cultivate talented students who have programming experience before their university study. In this course, we will introduce the fundamentals of object-oriented programming language and programming techniques. We will also introduce preliminary knowledge on data types and data structures. The students will be familiar with the popular programming language Java and be able to construct programs for solving general problems. On completion of this course, the students should be able to:

  1. understand the basic components in a software system and the working mechanism of the Internet and the Web;
  2. know the basic syntax of the Java programming language;
  3. understand the features of object-oriented programming: abstraction, encapsulation, inheritance, polymorphism; and
  4. develop programs to solve real problems using integrated development environments.


Course Materials

There is no required text for this course. A reference textbook is “Java: How to Program (10th ed., late object version)” by Paul Deitel and Harvey Deitel. Lecture notes, lab sheets, and other materials will be posted periodically on this page.


There will be five written assignments, one project, and one final examination. We try very hard to make questions unambiguous, but some ambiguities may remain. Ask if confused or state your assumptions explicitly. Reasonable assumptions will be accepted in case of ambiguous questions.

Grade Breakdown

Schedule and Syllabus

Unless otherwise specified the lectures are 2:00pm to 3:50pm every Monday at Room 505 of Teaching Building No. 1, SUSTech.

Week #1Monday, Sept. 6Introduction to Computer Programming[slides] [lab]
Week #2Monday, Sept. 13Introduction to Java Applications[slides] [lab]
Week #3Saturday, Sept. 18Control Statement I[slides] [lab]
EventMonday, Sept. 20Assignment 1 Release (Weeks 1 to 4)
Week #4Monday, Sept. 27Control Statement II[slides] [lab]
DeadlineSunday, Oct. 10Assignment 1 Due
Week #5Monday, Oct. 11Arrays and ArrayLists[slides] [lab]
EventMonday, Oct. 11Assignment 2 Release (Weeks 5 and 6)
Week #6Monday, Oct. 18Methods: A Deeper Look[slides] [lab]
DeadlineSunday, Oct. 24Assignment 2 Due
Week #7Monday, Oct. 25Introduction to Classes and Objects[slides] [lab]
EventMonday, Oct. 25Assignment 3 Release (Weeks 7 and 8)
Week #8Monday, Nov. 1Strings, Wrapper Class, and File IO[slides] [lab]
DeadlineSunday, Nov. 7Assignment 3 Due
Week #9Monday, Nov. 8Class and Objects: A Deeper Look[slides] [lab]
EventMonday, Nov. 8Project Specification Release[spec]
EventMonday, Nov. 8Assignment 4 Release (Weeks 9 and 10)
Week #10Monday, Nov. 15Inheritance I[slides] [lab]
DeadlineSunday, Nov. 21Assignment 4 Due
Week #11Monday, Nov. 22Inheritance II & Polymorphism I[slides] [lab]
EventMonday, Nov. 22Assignment 5 Release (Weeks 11 and 13)
Week #12Monday, Nov. 29Polymorphism II[slides] [lab]
DeadlineSunday, Dec. 5Assignment 5 Due
Week #13Monday, Dec. 6GUI programming[slides]
Week #14Monday, Dec. 13Java Collections, Generic Methods and Classes[slides] [lab]
Week #15Monday, Dec. 20Exception Handling and Recursion[slides]
EventMonday, Dec. 20Project Inspection
Week #16Monday, Dec. 27Project Demo and Revision