Skip to content

Assumed Prior Knowledge

CS2030 has the prerequisite of CS1010 or its equivalent. There are, however, several versions of CS1010, and some students are waived from doing CS1010 due to prior programming knowledge. This document here outlines the prior knowledge that the instructors assume the students have before entering CS2030.

Basic computational problem solving and programming skills

Here are some learning outcomes that students should attained after taking CS1010. Students should be familiar with:

  • the computational thinking process of formulating a problem and coming up with a solution,
  • fundamental programming concepts, including variables, assignments, conditions, branches, loops, expressions, functions, recursions, and structures
  • how to program a given solution in a programming language
  • different classes of programming errors (logical errors, syntax errors, run-time errors)
  • common debugging techniques and strategies
  • good programming practices (comments, naming convention, indentation, modular code)
  • simple data structures (e.g., arrays)
  • writing test cases to check correctness of own program
  • how a program is executed and represented in a computing device (at a high level)
  • the compilation process (at a high level)
  • the concept of reusability and the use of standard/3rd party software
  • bubble sort, insertion sort, linear search, and binary search

Students who take CS2030 are assumed to have sufficient knowledge of the above. If there are specific components that you are not familiar with, please pick up the notes from CS1010 and self-learn.

UNIX command line

We will use the sunfire computing server for this module. As such, you are expected to be comfortable with using CLI (command line interface) and the basic UNIX commands, in a text window without fancy windows and mouse, and the concept of ssh-ing into a remote host and work remotely.

If you are not familiar with this concept, take a look at the slides from the CS1010/CS1020 workshop.

Source code editors

You are expected to be familiar with one or more source code editors. Note that source code editor is not the same as text editor (e.g., Notepad). A source code editor automatically highlights syntax, indents the code, matches parenthesis, supports autocompletion and code folding, and integrates with the software development process (such as revision control).

CS1010 started (or would have started) you off with vim. Many good source code editors exists, such as Atom, VS Code, and of course emacs1!

For your career, you should pick one and master it. If you want to learn vim, the command vimtutor is a good place to start. There are also many tutorials, webcasts, games, etc, online to help you learn vim. Just google.

Developer's Friendly OS

Your life through the computing modules would be much much better if you are using a developer's friendly operating system on your personal computer.

  • If you uses Linux or macOS, you are all set. For macOS users, brew is highly recommended.

  • If you use Windows 10, you should definitely install the Ubuntu Bash Shell. There are many excellent tutorials online (such as this one).