Summer 2020 (S2), Columbia College
Online using Zoom, or Room 444
Columbia College Main Campus
Room 544; Online (Shared)
2 July 2020, 17:30-20:00 (Online; OJ)
13 Aug 2020, 13:00-16:00 (Online; OJ)
WARNING: Midterm & Final
As explained in class, the Midterm and Final both contain 2 parts: Online written exam (40%) and OJ contest (60%). You have 2.5 hours to complete BOTH parts (for final you have 3 hours). Exactly how much time you want to spend on each is your decision. Late submissions will not be accepted.
A rigorous introduction to computing science and computer programming, suitable for students who already have some background in computing science and programming. Students will learn the fundamental concepts of computing science and develop basic skills in software development.
Topics include: history of computing science; review of elementary programming; data types and control structures; fundamental algorithms; abstract data types; elementary data structures; basic object-oriented programming and software design; elements of empirical and theoretical algorithmic; computability and complexity; design, specification and program correctness.
Practicing with Online Judge
In order to complete lab assignments and part of the online test, you must register for an account at my Online Judge platform: http://126.96.36.199:81
During lecture hours, new problems (prefix `csci125p`) will also be added to the OJ for you to practice your programming skills. This is part of your in-class lab hours. Due to overwhelmingly low participation, I am forced to make all practices MANDATORY. If you have individual requests I’d be happy to accommodate as best as I could, but please understand that coding requires a lot of practice.
If you have questions with your code, please provide me your user ID on the OJ so I can take a closer look.
I will post more detailed instructions as we progress.
Textbook and References
- Problem Solving with C++, 10/E, Walter Savitch, ISBN-10: 0133591743 • ISBN- 13: 9780133591743 ©2018 Addison-Wesley
You can find a copy of this book in the Library.
- VIM configuration file (~/.vimrc): https://jetic.org/download/vimrc
- H801 (macOS): https://jetic.org/wp-content/uploads/2020/06/04-2020-1001-801_VoTS_macOS.zip
- H801 (ubuntu): https://jetic.org/wp-content/uploads/2020/06/04-2020-1001-801_VoTS_ubuntu.zip
- H802 Demo code: https://jetic.org/wp-content/uploads/2020/06/04-2020-1001-802_demo.zip
- H803 OJ P016-P018 Extra Sample IO files: https://jetic.org/wp-content/uploads/2020/06/p016-p018_extra_sample_io.zip
- H804 also for OJP022: https://jetic.org/wp-content/uploads/2020/07/04-2020-1001-804_class_I_demo.zip
- H805: https://jetic.org/wp-content/uploads/2020/07/04-2020-1001-805_class_II_demo.zip
Curriculum and Slides
The slides will be uploaded after class. I may also introduce modifications to the curriculum itself as we progress.
Please note that you should NEVER use these slides as your only study material. It should be accompanied by either your notes or the actual textbook.
It is recommended that you have a Linux environment (I recommend Ubuntu) with access to Bash and command line. macOS is also acceptable.
I do not offer Windows related assistance, but if you do choose Windows I heard VSCODE is handy. DevC++ is OK for writing simple code but is unstable. Working on your tablet or phone is a NO NO.
|Ch 0 Introduction to CS and Programming (LS0);|
Ch 0 Environment setup (LS1)
|Lab 0 out;|
|Ch 0 Introduction to Linux command line (LS2);|
Ch 1 Your first C/C++ programme (LS3)
|Lab 0 due;|
|Ch 1 Your first C/C++ programme (LS4);|
Ch 2 Arrays (LS5)
|Assignment 1 out;|
Lab 1 out;
|Ch 3 Pointer & Debugging with LLDB (LS6)|
Ch 4 Functions (LS7)
|Assignment 1 due;|
Lab 1 due;
OJ due (p001-p009);
|Ch 4 Functions (LS8, LS9)||Assignment 2 out;|
Lab 2 out;
|Ch 5 Characters and Strings (LS10, LS11)||Assignment 2 due;|
Lab 2 due;
OJ due (p010-p018);
|Review for Midterm (LS12)||Online Midterm;|
|Ch 6 Class, Object Oriented Programming (LS13, LS14)||Assignment 3 out;|
Lab 3 out;
|Ch 6 Class, Object Oriented Programming (LS15, LS16)||Assignment 3 due;|
Lab 3 due;
OJ due (p016-p024);
|Ch 7 Data Structure (LS17, LS18)|
|Ch 7 Data Structure (LS19, LS20)||Assignment 4 out;|
Lab 4 out
|Review||Assignment 4 due;|
Lab 4 due;
OJ due (p025-p030);
|Week 13||–||Final (Online; OJ)|
|Online Judge Practices||20%|
|Written Midterm + Programming Midterm||20%|
|Written Final + Programming Final||30%|
The general policy is that you will not lose marks for making mistakes in Handwritten Assignments, as long as you tried to understand the subject to the best of your ability. However, mistakes in Labs will result in deduction of marks.
Quizzes are modelled closely after the assignments, if you nailed the assignments you should be fine.
Additionally, you will need to get at least 50% in the final to pass.
Cheating and Plagiarism Policy
I expect all students to uphold the principle of academic honesty. Cheating and plagiarism (presenting another person’s words or ideas as one’s own) are not acceptable behaviour at anywhere. Depending on the severity of the offence such acts can result in a grade of zero on the test or assignment, a failing grade (F) in the course, or expulsion. In all cases, the circumstances and the penalty are recorded in the student’s file.