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
- https://www.geeksforgeeks.org/
- LeetCode, CodeChef, TopCoder
- #acm in Discord
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?
COMP3010 - 1.0 - Introduction
By Daniel Sutantyo
COMP3010 - 1.0 - Introduction
Introduction to the unit
- 172