CSC-1004: Computational Laboratory Using Java

Course Introduction

This course is a computational lab course for the purpose of strengthening programming skill. As a laboratory course, CSC-1004 will be delivered in the format of finishing projects. Self-teaching is especially important for succeeding in this course. Each student is expected to individually implement:

Each student will choose a project from a list of topics (See the Section Project Topics below), and submit the executable program, source code, and necessary documents at the semester end.

Scoring: 1) Java Project (60 points), 2) Python Project (20 points) and 3) Bi-weekly report (10 points). 4) GitHub Repository (5 points) 5) Course and Teaching Evaluation (CTE) (5 points).

For the detailed scoring scheme, please check the project introduction below.

Course Arrangement

  1. Lectures.
    • Time: Tuesday, 3:30PM - 4:20PM.
    • Classroom: Bldg 201, Teaching B Building.
  2. Tutorials.
    • Time: Tuesday, 6:00PM - 7:50PM and Thursday, 6:00PM - 7:50PM.
    • Classroom: Cheng Dao Bldg 102.
  3. Office Hours.
    • Guiliang Liu (Instructor): Tuesday, 4:30 PM - 5:30 PM, Bldg 201, Teaching B Building.
    • Linxin Yang (TA): Monday, 4:00 PM - 5:00 PM, Room 302, RB Building.
    • Yaomin Wang (TA): Thursday, 4:00 PM - 5:00 PM, No.110, The bigger room of SDS Research Lab, 4th Floor, Zhi Xin Building.
    • Chaoxun Guo (TA): Wednesday , 7:00 PM - 8:00 PM, Room 318, Dao Yuan Building.

Important Notes


Some news will be added to here at the student′s request.


  1. Early Submission Bonus: If you can submit both the java and python project before the April 24th (Monday), 3 points (3/100 points) bonus will be added to your final scores.
  2. Late Policy. A late submission should receive a 10% penalty for each date after the due. Note that the penalty can accumulate until it reaches 100% (late for 10 days). If you need special care (e.g., for surgery and other health problem), DO NOT wait until the last moment, and please let me know in advance (see my contact below).
  3. Late Drop. A late drop from the course is not encouraged. Under some very special circumstance, student may apply for a late drop, but there is no guarantee that the request can be approved. Note that the decision is made by both the instructor and the school office.
  4. Plagiarism. Plagiarism is strictly prohibited. If the instructor or TAs catch the sign of plagiarism in your project, you will receive a penalty and take the consequences, potentially including failing the course, a warning record, suspension of your study or even dismissal from the school. You must finish the coding by yourself (without any group members). DO NOT let others borrow your codes for reference. If any plagiarism happens, both the borrower and the lender receive a penalty.

Github Repository (5 points)

To better report the progress of your project, you are required to create private (instead of public ones) github repositories for the class. The name of these projects should be CSC1004-Java-ProjectTopics and CSC1004-Python-ProjectTopics . If you want to know how to create a github repository and the basic git commands, please come to the tutorial. The link of this repository should be reported in the bi-weekly report (see below).

Bi-Weekly Report (10 points)

Please submit the weekly report based on the following format. Note that the link of this repository should be reported in the bi-weekly report (Check the format here ).

Course and Teaching Evaluation (CTE) (5 points)

A proper CTE will help both the instructor and teaching assistants (TAs). Please finish the CTE at our school's request. Once you have submitted, please drop TAs an email so that the scores will be assigned to you.

Candidate Topics for Java (60 points)

Please choose one topic from the following:

Python Project Topic (20 points)

Python Project: Image Classification. You are expected to write a python project that learns a model for image classification. For more details, please refer to here .

Course syllabus and Timetable

Topics covered will include the following (The instructor will consistently upload slides and the timeline might be changed at the needs from students)):

  1. Java Project Introduction
  2. Advanced Java Features
  3. Java Graphical User Interface (GUI)
  4. Java Socket Programming.
  5. Java Database (JDB).
  6. Java Web.
    • Week 10 (Apr. 4th) [slide] (coming soon)
    • Week 11 (Apr. 11th) [slide] (coming soon)
  7. Python Project Introduction.
    • Week 12 (Apr. 18th) [slide] (coming soon)
    • Week 13 (Apr. 25th) [slide] (coming soon)
  8. Basic Machine Learning (ML) with python[slide] (coming soon).
    • Week 14 (May 2nd) [slide] (coming soon)