COMP3010: Algorithm Theory and Design

Daniel Sutantyo,  Department of Computing, Macquarie University

1.0 Introduction

  • Introduction

  • Delivery

    • ​Lectures, Workshops

  • Resources

    • ​iLearn, GitHub

  • Assessments

    • ​Weekly submissions, Assignments, Class Tests, Final Exam

  • ​Questions?

List of things to discuss today:

1.0 - Introduction

What is this unit about?

1.0 - About

  • From the handbook:

    • this unit covers general issues of the theory of computation and algorithm design, including computability and complexity 

  • COMP3010 grew from the traditional theoretical computer science course

    • Turing Machines, Automata, Languages, Decidability

    • Past offerings of the course cover many topics:

      • Cryptography

      • Graph Theory

      • Number Theory and Computation 

      • etc (used to change depending on who the lecturer is)

    • Notorious for being the hardest computing unit (because ... math!)

What is this unit about?

1.0 - About

  • My background: cryptography and number theory (i.e math), coding competitions, general problem solving

  • Main goals:

    • Understand how to analyse the complexity and correctness of different algorithms

    • Get comfortable with the mathematics in algorithm analysis

    • Understand different approaches to problem solving and the theory behind them

    • Gain exposure to different kind of algorithms (i.e. learn by example)

What is this unit about?

1.0 - About

  • COMP1000/115 

    • learn how to write code with no syntax errors

  • COMP1010/125

    • learn how to write code to do something

  • COMP2010/225

    • learn about efficient code that do something

  • COMP3010

    • learn to write your own efficient code

  • Complexity Analysis

    • complexity notation (\(O\), \(\Theta\), \(\Omega\))

  • Correctness Analysis

    • loop invariants, induction

  • Brute-Force Methods

    • search-space, permutations and combinations, recursive backtracking

  • Dynamic Programming

  • Greedy Algorithm

  • Divide and Conquer Algorithm

    • recursion-tree, substitution method, master method

List of Topics (1st Half)

1.0 - Topic

What is this unit about?

1.0 - About

See efficient algorithms

See correct algorithms

Write efficient algorithms

Write correct algorithms

Write good algorithms

Complexity analysis

Correctness analysis

  • String Algorithm

    • Huffman encoding, Edit distance

  • Graph Algorithms

    • Bellman-Ford, Floyd-Warshall 

  • Miscellaneous Topic (i.e more algorithms)
  • Complexity Theory
    • P vs NP
    • Reductions
    • Approximation Algorithm

List of Topics (2nd Half)

1.0 - Topic

Why P vs NP?

1.0 - Topic

Illustration by Stefan Szeider, https://www.ac.tuwien.ac.at/people/szeider/cartoon/

Why P vs NP?

1.0 - Topic

Illustration by Stefan Szeider, https://www.ac.tuwien.ac.at/people/szeider/cartoon/

Why P vs NP?

1.0 - Topic

Illustration by Stefan Szeider, https://www.ac.tuwien.ac.at/people/szeider/cartoon/

  • To be able to construct a good algorithm to solve a problem

  • To be able to derive the time complexity of an algorithm

  • To be able to prove the correctness of an algorithm (or at least logically argue its correctness)

  • To be able to communicate using a formal and precise language (e.g. mathematics)

  • To have some basic understanding of the P vs NP topic

What is expected out of you?

1.0 - About

Why is this unit so hard (supposedly)?

1.0 - About

Why is this unit so hard (supposedly)?

1.0 - About

  • Hype?
    • it's a hard unit, so I'm just gonna aim for a Pass
  • Mathematics?
  • You can't memorise it
  • You can't really study for it
  • Requires different way of thinking that I'm not used to
  • I didn't really study for it
  • Lectures are held online via zoom

    • Zoom link is on iLearn, near the top of the page

    • Lecture slots:

      • Tuesday 3-4

      • Friday 3-5

    • Most of the material for this unit will be given using video recordings that you can watch at your own pace

      • Tuesday lectures will be used to introduce the week's topic and Q&A session

      • Friday lectures will be used for assessments (e.g. class test) or if we need more time to discuss thing

Lectures

 

1.0 - Delivery

  • Friday lecture slot:

    • You are required to make yourself available on some Fridays to sit the assessment (Week 7 and Week 13 Class Tests, plus any additional quizzes)

    • You need to lodge a special consideration request (ask.mq.edu.au) if you cannot sit the assessment on a Friday

  • Otherwise, I don't expect to use the Friday lecture slot on most weeks

Lectures

1.0 - Delivery

  • Workshops start in Week 2

  • Not compulsory

  • Workshops:

    • Mon 1-3 is on-campus

    • Tue 1-3 and Tue 5-7 are online via zoom (link is on iLearn)

    • if you were enrolled in Mon 11-1, you got moved to Tue 5-7

  • Questions to be released every weekend, week n workshop will discuss week (n-1) material

  • Submission questions every week, due Sunday morning 

    • first submission due this Sunday

Workshops

1.0 - Delivery

  • Use the workshop to practice doing the questions and ask for help if you need any

  • You are allowed, and actually encouraged, to discuss the workshop questions with your peers, even the submission question (BUT NOT ASSIGNMENTS)

    • please note who you are working with

  • You need to learn the technique, not just knowing the answers

    • questions in the workshops are similar in nature to what will be asked in the exams and class tests, but don't expect to see the same question

  • I may release a video solution to some questions, depending on how much time I have

Workshops

1.0 - Delivery

  • Assessment Section

  • Communications

    • Forum

    • Contact Teaching Staff

    • Discord (https://macs.icu)

iLearn

1.0 - Resources

GitHub

  • https://github.com/sutantyo/comp3010_2020 (see Week 1 Workshop)

Textbooks

1.0 - Resources

CLRS

Skiena

  • Main textbook, more theoretical

  • Chapters 1-5, 15-16, 24-26, 32, 34-35

  • We are going to follow the same approach for some materials (Dynamic Programming, Greedy Algorithms, Divide and Conquer)

  • Easier to read, background reading

  • Chapters 1, 2, 7-10

  • Guide to Algorithm

Other books

1.0 - Resources

Websites

1.0 - Resources

1.0 - Assessments

  • Due every Sunday morning

  • The plan is to have 12 submissions, each marked out of 1 for a maximum of 10 marks total

  • The marks will be aggregated, so you can get 0.5 mark 6 times and still get the full 10%

Weekly Submissions (10%)

  • Four assignments, coding-based (using Java)

  • Assessment may include quizzes or report-writing

    • it is not enough to just write the code --- you need to understand how the code works and explain it

    • quizzes may ask you to make small modifications on the code

Assignments (40%)

1.0 - Assessments

  • Week 8 and Week 13

    • corrected to Week 8, was set at Week 7 earlier

  • One-hour online quiz (may give more time due to COVID restrictions)

Class Tests (20%)

  • Standard 3 hours written exam

  • If the university procedure doesn't change, you will have a 6-hour window, similar to last semester

Final Exam (30%)

1.0 - Questions

Questions?