CS102A Introduction to Computer Programming A

Fall 2020, Bilingual Class

Course Instructor

Dr. James Yu 余剑峤

Course Description

The course aims to cultivate students who have no programming experience before their university study. In this course, we will introduce the fundamentals of object-oriented programming language and programming techniques. 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 four 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


ClassInstructorTeaching AssistantTime
5Ms. Yun ShenTBDMonday Slots 5 and 6
6Ms. Yao ZhaoTBDMonday Slots 5 and 6
7Ms. Yao ZhaoTBDTuesday Slots 3 and 4
8Ms. Yao ZhaoTBDTuesday Slots 5 and 6

Note that Classes 1-4 are sub-classes of CS102A (English).

Schedule and Syllabus

Unless otherwise specified the lectures are 10:20am to 12:10pm every Monday at Room 101 of Lychee Hill Building No. 1, SUSTech.

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