CS109 Introduction to Computer Programming

2022 Fall Syllabus

Instructors

Zhuozhao Li, 李卓钊

  • Office: RM 516, South Tower, CoE Building (工学院南楼516)
  • Office hour: Friday 4:00-5:00PM, or email to schedule an appointment.

Yanhong Jia, 贾艳红 (Lab)

Course Descriptions

The course aims to cultivate students who have programming experience before their university study. In this course, we will introduce the fundamentals of computer programming and common programming techniques using a popular object-oriented programming language, Java. The students will be familiar with computer programming and be able to construct programs for solving complex computing problems.

On completion of this course, the students should be able to:

  • Understand the basic components in a software system and the working mechanism of the Internet and the Web.
  • Know the basic syntax of the Java programming language.
  • Understand the features of object-oriented programming: abstraction, encapsulation, inheritance, polymorphism.
  • Develop programs to solve real problems using integrated development environments.
Course Materials
  • All the lecture and lab slides.

  • Textbook (optional): P. Deitel, H. Deitel, Java: How to Program (11th edition), Prentice-Hall, 2017. drawing

  • Other references (optional):

    • Y. Daniel Liang. Introduction to Java Programming, 10e, Pearson, Prentice Hall, 2015.
    • Allen B. Downey and Chris Mayfield. Think Java, How to Think Like a Computer Scientist, O’Reilly, 2016.
Course Workloads

There will be five programming assignments, a project, and a final examination.

Grading Policy
  • Programming assignments, 30%

  • Lecture attendance and quizzes, 5%

  • Lab attendance and exercises, 5%

  • Project, 20%

  • Final exam, 40%

Academic Integrity/Academic Dishonesty

I expect students to be honest and not cheat on their assignments, project, or exams. Please refer to the plagiarism policy (IMPORTANT!!! Please READ carefully!!!) of CSE department for more details. You MUST sign the commitment letter and submit on the Sakai/Blackboard system.

Course Policies
  • No late assignment will be accepted.
  • Unless some special situations (e.g., medical leave) which will be reviewed by all the instructors.
  • The following excuses will NOT be approved for late submissions: computer crashes, disk crashes, accidental file deletions, lab computer unavailability, and the like. There will be no reply for this sort of late assignment submission requests.
Schedule (Tentative)

Please refer to Sakai for the lecture and lab materials.

Acronyms: PA = Programming Assignment, PROJ = Project

Week Date Contents Events
1 Sep. 6, 2022 [Lecture] Course overview, Introduction to Computers
[Lab] Programming Environment Setup
 
2 Sep. 13, 2022 [Lecture] Introduction to Java Applications
[Lab] IDE and Basic Exercises
 
3 Sep. 20, 2022 [Lecture] Control Statements: Part 1
[Lab] Control Statements: Part 2
PA1 out
4 Sep. 27, 2022 [Lecture] Control Statements: Part 2
[Lab] Control Statements: Part 2
 
5 Oct. 11, 2022 [Lecture] Arrays
[Lab] Array Exercises
PA1 due
PA2 out
6 Oct. 18, 2022 [Lecture] Methods
[Lab] Static Methods
 
7 Oct. 25, 2022 [Lecture] Introduction to Classes and Objects
[Lab] Classes and Objects 1
PA2 due
PA3 out
8 Nov. 1, 2022 [Lecture] Strings, Wrapper Classes, and File I/O
[Lab] Constructors and Strings
 
9 Nov. 8, 2022 [Lecture] Classes, Objects, and Methods: A Deeper Look
[Lab] Classes and Objects 2
PA3 due
PA4 out
PROJ out
10 Nov. 15, 2022 [Lecture] Inheritance 1
[Lab] Inheritance
 
11 Nov. 22, 2022 [Lecture] Inheritance 2 and Polymorphism 1
[Lab] Polymorphism and Abstract Classes
PA4 due
PA5 out
12 Nov. 29, 2022 [Lecture] Polymorphism 2
[Lab] Interfaces
 
13 Dec. 6, 2022 [Lecture] Java GUI Programming
[Lab] GUI Exercises
PA5 due
14 Dec. 13, 2022 [Lecture] Java Generics and Collections
[Lab] Sort and Map
 
15 Dec. 20, 2022 [Lecture] Exception Handling
[Lab] Project presentation
PROJ due 1
16 Dec. 27, 2022 [Lecture]
[Lab] Project presentation
PROJ due 2