0% found this document useful (0 votes)
14 views

Lecture 1 - Introduction and Syllabus

CMPS 214 is a course focused on the design and analysis of algorithms and data structures, emphasizing analytical thinking and communication skills. The course covers various topics including sorting, divide-and-conquer algorithms, dynamic programming, and graph algorithms, with a mix of lectures, homework, and exams to assess understanding. Key resources include the textbook 'Introduction to Algorithms' and optional references, with a structured approach to learning and consistent effort required for success.

Uploaded by

ali2moh.04
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
14 views

Lecture 1 - Introduction and Syllabus

CMPS 214 is a course focused on the design and analysis of algorithms and data structures, emphasizing analytical thinking and communication skills. The course covers various topics including sorting, divide-and-conquer algorithms, dynamic programming, and graph algorithms, with a mix of lectures, homework, and exams to assess understanding. Key resources include the textbook 'Introduction to Algorithms' and optional references, with a structured approach to learning and consistent effort required for success.

Uploaded by

ali2moh.04
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PPTX, PDF, TXT or read online on Scribd
You are on page 1/ 24

CMPS 214

Lecture 1:
Logistics and General Introduction
Who are we?
• Instructor:
• Fatima Abu Salem
• TAs:
• TBA
Algorithms are
fundamental

Operating Systems Machine learning Cryptography


The
Algorithmic
Lens

Compilers
Networking Computational Biology
Algorithms are useful

• As inputs get bigger and


bigger, having good
algorithms becomes more
and more important!
Course goals
• The design and analysis of algorithms and data
structures
• These go hand-in-hand

• In this course you will:


• Learn to think analytically about algorithms
• Flesh out an “algorithmic toolkit”
• Learn to communicate clearly about algorithms
Our guiding questions:

Does it work?
Is it fast?
Can I do better?
What do we mean by
better
• Theoretically, at scale?
• Experimentally, in terms of the constants hidden
under the big Oh notation.
• What is resourceful computing?
• Time
• Space
• Caching
• Parallelism
• Green Computing
• And a lot more..
Course Learning Outcomes
• Categorize time functions according to their order of growth.
• Solve recurrence relations to determine the running time of
algorithms.
• Write pseudo-code for iterative and recursive algorithms of varying
asymptotic performance.
• Rigorously and formally analyze algorithms, prove their correctness,
and discover their complexity.
• Implement, analyze, and prove correctness of various graph
algorithms.
• Implement abstract data structures and evaluate the suitability of a
given abstract data structure in a specific context.
• Design and analyze the performance of divide-and-conquer
algorithms, greedy algorithms, and multi-threaded algorithms.
Outline of the Course
• Sorting and Order Statistics: Insertion sort, selection sort, bubble sort, loop
invariants, worst case, average-case, best-case performance, merge sort, quick
sort, randomized quick sort, median and order statistics, sorting lower bound,
and sorting in linear time.
• Divide and Conquer and Multithreaded Algorithms: Solving recurrences,
parallelism and span, multithreaded algorithms for array sum, for matrix
multiplication, and for Strassen’s algorithm for matrix multiplication.
• Dynamic Programming: Rod cutting, longest common subsequence, matrix chain
multiplication, and others.
• Greedy Algorithms: Activity-selection problem, Huffman codes, and the task-
scheduling problem.
• Advanced Data Structures: Hashing, red-black trees, amortized analysis,
binomial heaps, and Fibonacci heaps
• Graph Algorithms: Minimum spanning tree, Prim’s and Kruskal’s minimum
spanning tree algorithms, shortest path algorithms, Dijkstra’s algorithm,
Bellman-Ford algorithm, SSP in DAGS, Floyd-Warshall algorithm.
Course elements and
resources

• Lectures
• References
• Handouts with deeper mathematical exposition
• IPython Notebooks occasionally showing details
that algorithms omit.
• Homework with solution key
• Drop Quizzes, Two term exams and a final exam.
• Office hours and problem-solving sessions
How to get the most out of
lectures
During lecture:

• Participate, ask questions.
• Before lecture:
• Do pre-lecture exercises on the website when assigned.
• After lecture:
• Go through the slides.
• Read relevant chapters in the book.
• Try to solve as many exercises/problems as you can from the book. All
those exercises have their solutions found somewhere online.
• Attend the recitation session assigned for the week.
• Try to solve the assignments we post on Moodle for the week.
• Attend the clinic session to go through the challenging questions
found in the assignments.
• Most importantly, what will make or break it:
• Do not wait to “catch up” the week before the exam.
• Your individual effort, on a timely basis. Consistency is key.
• Seeking feedback during recitation sessions and clinic.
Our main textbook

”CLRS”: Introduction to
Algorithms by Cormen,
Leiserson, Rivest, and Stein.
Available FOR FREE ONLINE
through the Stanford library.
Optional References

• Algorithms Illuminated, Vols 1,2 and 3 by Tim


Roughgarden
• Additional resources at algorithmsilluminated.org

• The following (optional) book:

“Algorithm Design” by
Kleinberg and Tardos
Online resources
• MIT-Introduction to Algorithms, Fall 2005
• MIT-Introduction to Algorithms, Fall 2011
• MIT-Design and Analysis of Algorithms, Spring 2015
IPython Notebooks
• Lectures will occasionally use IPython notebooks
(but not homeworks)

• For next lecture, the pre-lecture exercise is to get started


with Jupyter Notebooks (Python).
• See course website for details.

• The goal through Ipython notebooks is to make the


algorithms (and their runtimes) more tangible.
Homework
• On a regular basis at the end of each main module
• Solution keys will be provided
• TA will help answer your questions around them
during their office hours.
• …But, you should try your best to give it all your go
before resorting to the solution key or help from
the TA.
• Your individual progress on those homework
assignments will reflect on your grade.
Exams and grading
• There will be two term exams and one final exam.
Weights:
• Assignments (Drop Quizzes) (5%)
• Minimum(Exam 1, Exam 2) (25%)
• Maximum(Exam 1, Exam 2) (35%)
• Final Exam (35%)
A note on course policies
• Course policies are listed in the syllabus.
• Read them and adhere to them.
Feedback!
• Please help us improve the course.
• Get in touch as early as possible to express your
concerns.
How to approach
CMPS 214?
How to approach CMPS
214?
1. Review Chapters 1, 3, and 5 from CMPS 211 textbook by
Rosen during this weekend.
2. Review CMPS 211 exams and assignments from chapters 1,
3, and 5 in the same book during this weekend.
3. Work hard
4. Ask for help or communicate valid concerns on time.
5. On average, two hours daily during the week, three hours
on each of Saturday and Sunday.
6. Use this time to review lectures, consult with online
resources, read additional references, solve pre-lecture
exercises or homework.
7. Try working independently and individually to the
maximum extent possible.
Email Etiquettes?
Email Etiquettes

1. I cannot guarantee to respond to emails sent


outside working hours (8:00 AM-5:00 PM).
2. I cannot guarantee to respond to emails sent
during the weekend or public holidays.
3. When sending out an email during working
hours, please allow a maximum of 24 hours
before receiving a reply.
Week Topic Notes
Week 1 (January 20 – Jan 20: Introduction + Fundamentals (Sorting and Algorithm Analysis)
January 21)
Week 2 (January 24 – Jan 25: Fundamentals (Sorting and Algorithm Analysis)
January 28)
Jan 27: Solving Recurrences
Week 3 (January 31 – Feb 1: Solving Recurrences + Partition and QuickSort
February 4)
Feb 3: Quicksort and Randomized Quicksort
Week 4 (February 7 – Feb 8: Randomized Quicksort + Median and Order Statistics
February 11)
Feb 10: Median and Order Statistics
Week 5 (February 14 – Feb 15: Sorting Lower Bounds and Linear Time Sorting
February 18)
Feb 17: Linear Time Sorting
Week 6 (February 21 – Feb 22: Divide and Conquer + Multithreaded Algorithms
February 25)
Feb 24: Divide and Conquer + Multithreaded Algorithms Feb 25: Exam 1
Week 8 (February 28 – March 1: Divide and Conquer + Multithreaded Algorithms
March 4)
March 3: Binary Search Trees and Red Black Trees
Week 9 (March 7 – March March 8: Binary Search Trees and Red Black Trees
11)
March 10: Hashing
Week 10 (March 14 – March March 15: Hashing + Amortized Analysis
18)
March 17: Amortized Analysis + Binomial Heaps
Week 11 (March 21 – March March 22: Binomial Heaps
25) March 24: Graphs, BFS, and DFS
Week 12 (March 28 – April March 29: Graphs, BFS, and DFS
1) March 31: Topological Sort and Strongly Connected Components April 1: Exam 2
Week 13 (April 4 – April 8) April 5: Weighted Graphs (SSSP in DAGs, Dijkstra’s and Bellman-Ford)

April 7: Weighted Graphs (Dijkstra’s and Bellman-Ford) + Introduction to Dynamic


Programming

Week 14 (April 11 – April April 12: Dynamic Programming Cont’d (LCS and Knapsack)
15)
April 14: Greedy Algorithms
Week 15 (April 18 – April April 19: Greedy Algorithms + Minimum Spanning Trees
22)
April 21: Minimum Spanning Trees Cont’d
Week 16 (April 25 – April April 26: Max-Flows, Min-Cuts, and Ford Fulkerson
29)
April 28: Max-Flows, Min-Cuts, and Ford Fulkerson

You might also like