MS1008: Introduction to Computational Thinking
| Academic Units | 3 |
| Semester | Both |
| Pre-requisite(s) | Nil |
| Co-requisite(s) | Nil |
Course Instructor
Course AIMS
Computational thinking (CT) is a problem solving process with the aid of computer; i.e. formulating a problem and expressing its solution in such a way that a computer can effectively carry it out. It includes a number of characteristics, such as breaking a problem into small and repetitive ordered steps, logically ordering and analyzing data and creating solutions that can be effectively implemented as algorithms running on computer. As such, computational thinking is essential not only to the Computer Science discipline, it can also be used to support problem solving across all disciplines, including math, science, engineering, business, finance and humanities.
The aim of this course is hence to take you especially students with no prior experience of thinking in a computational manner to a point where you can derive simple algorithms and code the programs to solve some basic problems in their domain of studies. In addition, the course will include topics to appreciate the internal operations of a processor, and raise awareness of the socio-ethical issues arising from the pervasiveness of computing technology.
Intended Learning Outcomes
By the end of this course, you (as a student) would be able to:
- Describe the internal operation of a basic processor, how a program is executed by a computer and computing trends.
- Code basic programs based on the programming language used in the course
- Formulate a problem and express its solution in such a way that a computer can effectively carry it out. (i.e. equip you with CT skills)
- Apply the CT concepts on case studies/problem -based scenarios through hands-on practice of the CT processes.
Course Content
- Course Overview and Concepts of Computational Thinking: Solving complex problem using computer - enables the student to work out exactly what to tell the computer to do.
- Overview of Programming Languages: Graphic programming, high level programming languages (Python, C, Java, R, Matlab)
- Basic internal operation of computer: Basic computer organization (Processor, Memory, I/O) and how a computer execute a program (Machine instructions)
- Basic program structure: control constructs and data types: Concepts of data types, variables; Pseude code and flowcharts; Sequences, Selection (if/else), iteration (for/while loop);
- CT concept - Abstraction: Problem formulation - reducing something to a very simple set of characteristics to only focusing on the most relevant to the problem. Concept of functions/libraries and data structure
- CT concept - Decomposition: Break a complex problem into smaller and more manageable parts/steps, such that each of these smaller problems can then be looked at individually
- CT concept – Pattern recognition: Looking for similarities among and within problems, which also enable re-use knowledge of previous similar problems
- CT concept – Algorithm: Reformulating the problem into series of ordered steps through Identifying, analyzing, and implementing possible solutions with the goal of achieving the most efficient and effective combination of steps and resources. (Some common/useful examples: Sorting and searching)
- Limit of computing: Analysis of Algorithm Complexity to determine how much resources (space and time) are needed to execute an Algorithm in order to achieve code optimization.
- Computing Trends: Cloud, Edge and Fog computing, Quantum Computers
Social-Ethical Issues and Ramifications of Computing: Fairness, Privacy, Sharing, Hacking, software Piracy, Data Protection, Cyberbullying and trolling, Fake news, digital divides, IP/Copyright
Reading and References
The course will not use any specific text book. The following books and websites will be used as reference materials.
- The Practice of Computing using Python; William Punch and Richard Enbody, Pearson, 2017.
- Introduction to Computation and Programming Using Python: With Application to Understanding Data; (2nd Ed) John V. Guttag, MIT Press Ltd, 2016.
- https://edu.google.com/resources/programs/exploring-computational-thinking/
