CS 102A Introduction to Computer Programming

Spring 2020 -- Fengwei Zhang

  • Instructor: Fengwei Zhang
  • Class Time: Monday 04:20PM - 06:10PM
  • Class Location: Room 102, Lychee Hill #1
  • Office Address: Innovation Park, Building 10, Room 501
  • Office hour: Monday 06:10pm - 06:50pm or 08:50pm - 09:50pm
  • Homepage: https://fengweiz.github.io
  • Email: zhangfw (at) sustech (dot) edu (dot) cn

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.

Course Objectives

Upon successful completion of this class, the student will gain experience in:

Prerequisites

N/A.

Recommended Book

Java: How to Program (8th Edition), P. Deitel, H. Deitel (Java大学教程第八版,2012年出版,图书馆有借)
Book

Lab Sessions

Grading Policy

The grades for the course will be based upon the tables given below

Academic Dishonesty

Please read and fill the Undergraduate Students Assignment Delcaration Form in Chinese and English.

Student Disabilities Services

If you have a documented disability that requires accommodations, you will need to register with the University for coordination of your academic accommodations, or let me know.

Class Schedule

Date Topic Assignments & Announcements (tentative) Slides & Labs
Week 1, 02/10 Introduction to Computers and Java Due to the coronavirus issue, we will be using online teaching/videos in the first few weeks.
  • Course Overview Video 1 [Link]
  • Course Overview Video 2 [Link]
  • Chapter 1 Slides with Voice Recording [Link]
  • Lab 1 Tutorial Video [Link]
See more videos with higher resolution at Blackboard [Link]
Scan and join the Lecture QQ group (Lab QQ groups are different) for this course qq-group
  • Undergraduate Student Assignment Delcaration Forms (editable version) are posted on Blackboard. Sign and submit on Blackboard [Link]
[CourseOverview]
[Slides]
[Lab1]
Week 2, 02/17 Introduction to Java Applications, Data Types
  • The following lecture videos are posted on Blackboard [Link]
    • First Glance of Java Programs 1 Video
    • First Glance of Java Programs 2 Video
    • Java’s Primitive Types Video
    • Arithmetic Computation Video
    • Evaluation Order & Decision-making Statements Video
    [Slides]
    [Lab2]
    Week 3, 02/24 Control Statements I (including structured programming) Assignment 1 was out on Blackboard [Assignment1]
    Please submit the assignment via Online Judge (OJ) [OJ Site]

  • The following lecture videos are posted on Blackboard [Link]
    • Control Statment Introduction Video
    • If Else Selection Statement Video
    • While Statement Video
    • Counter-Controlled and Sentinel-Controlled Repetition Video
    • Type Cast and Scope Video
    • Operators Video
    [Slides]
    [Lab3]
    Week 4, 03/02 Control Statements II (including structured programming)
  • The following lecture videos are posted on Blackboard [Link]
    • For Statement Video
    • Do While Switch Break Continue Statements Video
    • Logical Operators Video
    • Structured Programming Video
    [Slides]
    [Lab4]
    Week 5, 03/09 Array Assignment 2 was out on Blackboard [Assignment2]
    Please submit the assignment via Online Judge (OJ) [OJ Site]

  • The following lecture videos are posted on Blackboard [Link]
    • Array Declaration and Creation Video
    • Array Initialization Rolling Dice Example Video
    • Enhanced For Statement Video
    • Two and Multi Dimensional Arrays Video
    Instead of QQ screen sharing, we will use zoom to meet during the class time [Link]

    [Slides]
    [Lab5]
    Week 6, 03/16 Procedural programming (static methods, APIs)
  • The following lecture videos are posted on Blackboard [Link]
    • Why Use Methods Video
    • Program Modules and Static Methods Video
    • Details of Methods Video
    • Method-call Stack and Argument Passing Video
    • Method Overloading and Command-line Args Video
    [Slides]
    [Lab6]
    Week 7, 03/23 Introduction to OO (Classes, Objects, Methods) Assignment 3 was out [Assignment3] [OJ Site]

  • The following lecture videos are posted on Blackboard [Link]
    • Introduction to Object-Oriented via Car Story Video
    • Class and Method Declaration Video
    • Object Creation & Method Calling & Instance Variables & Getter and Setter Video
    • Constructors Video
    • Case Study Ⅰ Pet Show Video
    • Case Study Ⅱ Account Balances Video
    [Slides]
    [Lab7]
    Week 8, 03/30 Strings and Wrapper Classes
  • The following lecture videos are posted on Blackboard [Link]
    • String Class Video
    • String Methods 1 Video
    • String Methods 2 Video
    • String Methods 3 trim toCharArray split valueOf Video
    • StringBuilder and Wrapper Classes
    [Slides]
    [Lab8]
    Week 9, 04/06 Classes, Objects and Methods: A Deeper Look
    Week 10, 04/13 Object-Oriented Programming: Inheritance
    Week 11, 04/20 Object-Oriented Programming: Polymorphism
    Week 12, 04/27 GUI Programming (brief overview)
    Week X, 05/04 International Labor Day!
    • Holiday -- International Labor Day!
    Week 13, 05/11 Generic Classes and Methods
    Week 14, 05/18 Generic Collections (ArrayList)
    Week 15, 05/25 Exception Handling: A Deeper Look
    Week 16, 12/23 TBA

    Acknowledgement: This course includes material from Dr. Yepang Liu and Dr. James Yu at SUSTech