Chat with us, powered by LiveChat

Computational Thinking and Algorithms

This subject is available under ICMS undergraduate degrees, please click the button below to find an undergraduate course for you.

Subject Code:

DAT202A

Subject Type:

Specialisation 

Credit Points:

3 credit points

Pre-requisite/Co-requisite: 

Course level of study pre-requisite: a total of 12 credit points including ICT101A, ICT102A, ICT103A and DAT101A from level 100 core subjects prior to enrolling into level 200 core and specialisation subjects. 

Subject Level:

200

Subject Rationale:

Computational thinking encompasses an interrelated set of problem-solving practices and techniques that allows expressing problems and their solutions in ways that computers could also execute. Learning to “reason” like a computer enables students to become better problem solvers across a broad range of careers.   

This subject equips students with the fundamental skills to design and solve complex computational problems using Python programming language. Students will be introduced to the foundations of computing, mathematical notations, and algorithms. They will learn to develop solutions to a variety of problems through the application of the core computational thinking pillars of decomposition, pattern recognition, abstraction, and algorithmic thinking.  

The subject will help students to understand how to systematically break down complex problems into manageable sub-problems and develop efficient procedures and algorithmic solutions using Python programming language. 

Learning Outcomes:

a) Use logic reasoning and analytical skills to evaluate and develop algorithmic solutions.

b) Analyse and deconstruct business problems to determine appropriate solutions that can be solved with algorithms.

c) Determine appropriate inputs and outputs for a range of algorithmic problems.

d) Design solutions to a range of problems by applying computational thinking pillars of decomposition, pattern recognition, abstraction, and algorithms.

e) Construct, implement, and test algorithms in Python to solve a range of business problems.

Student Assessment:

Broad Topics to be Covered:

Topic: 
W1: Introduction to computational thinking 

  • Computers, computing architecture, and binary systems 
  • Algorithms  
  • Coding 
  • Data types and structures 
  • Information, automata, formal language theory 
  • Computational geometry and number theory 
W2: Computational thinking pillars and processes 

  • Decomposition pillar and processes 
  • Pattern recognition pillar and processes 
  • Abstraction pillar and processes 
  • Algorithm design pillar and processes 
W3: Algorithmic thinking 

  • Overview of algorithm characteristics  
  • Unambiguous principle 
  • Inputs and outputs 
  • Finiteness principle 
  • Feasibility principle  
  • Principle of language independency  
  • Algorithm analysis based on examples 
W4: Applying logical reasoning 

  • Relevance of logical reasoning 
  • Inductive reasoning 
  • Deductive reasoning 
  • Boolean logic and operators (and, or, not operators) 
  • Identifying logical errors 
W5: Problem evaluation 

  • Defining problems (ill-defined vs. well-defined problems) 
  • Problem decomposition 
  • Developing flowcharts  
  • Translating flowcharts into algorithms  
W6: Key elements of solution design 

  • Logical processing to create visual representations of the decision
    process 
  • Defining solution design criteria 
  • Visual representations of the solution using diagrams and flow charts 
  • Problem-based solution design 
W7: Evaluating algorithmic solutions to identify inconsistencies  

  • Identifying inconsistencies and errors in syntax and logic 
  • Debugging of algorithms 
  • Evaluating the efficiency of different solutions  
  • Redesigning algorithmic solutions 
W8: Applying computational thinking in Python 

  • Technical requirements 
  • Python libraries (Pandas, NumPy, Matplotlib, SciPy, Scikit Learn) 
  • Dictionaries and characteristics 
  • Python variables and mathematical build-in reference functions 
  • Design solution algorithms to different challenges 
W9: Solving computational thinking challenges in Python – Part 1  

  • The historical data challenge  
  • The story challenge  
  • The cryptography challenge 
W10: Solving computational thinking challenges in Python – Part 2  

  • The cybersecurity challenge 
  • The chatbot challenge 
  • The housing market challenge  
W11:  Advanced computational thinking in Python and subject review 

  • The neural network challenge 
  •  Subject review  

Please note that these topics are often refined and subject to change so for up to date weekly topics and suggested reading resources, please refer to the Moodle subject page.