ECE 358H1S: Foundations of Computing – Winter 2018

Overview

Welcome to the course web-page for the winter 2018 term of ECE358, "Foundations of Computing". Here is the course description:

Standard algorithm design techniques: divide & conquer, greedy strategies, dynamic programming, linear programming, randomization, network flows, approximation algorithms. Brief introduction to NP–completeness: polynomial time reductions, examples of various NP–complete problems, self–reducibility. Students will be expected to show good design principles and adequate skills at reasoning about the correctness and complexity of algorithms.

Make sure to read and understand the course information sheet. Check the course forum frequently to make sure you receive any course announcements.

General information
Instructor:
  • Fatemeh Panahi
  • Email: fpanahi (at) cs (dot) toronto (dot) edu
  • Office: BA 3219
Teaching Assistants:
  • TBA

The course begins on Friday January 5th.

Time Location
Lectures Mon 16:00-17:00, Tue, Fri 13:00-14:00 GB 221
Tutorials Wed 18:00-19:00 HA 403
Office Hours: Tue 14:15 - 16:00 (by appointment) BA 3219
Textbook

    Required: Introduction to Algorithms, Third Edition by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein is available from the University of Toronto Library. codename: CLRS

    Supplementary: Algorithms, S. Dasgupta; C. H. Papadimitriou; U. Vazirani, 2006. codename: DPV

    Supplementary: Algorithm Design, J. Kleinberg; E. Tardos, 2005. codename: KT

Tentative Course Outline

    Introduction (1 week), Greedy Algorithms (2 weeks), Dynamic Programming (2 weeks), Network Flow (2 weeks), Linear Programming (2 weeks), NP–completeness (3 weeks), Coping with Hard Problems (1 weeks).

Course forum
  • All course materials and announcements will be posted in Piazza. We will be monitoring the course forum regularly to answer your questions.
  • Email is the preferred way to contact the instructor and the teaching assistants only for personal issues or feedback. Feel free to email the instructor regarding any course related personal issues or feedback. For other questions please post on the forum so other students can also benefit from them.
Assignment submission system
  • All assignment submissions will be done electronically, using the MarkUs system, starting the first lecture date. (When going to your MarkUs URL, you will be immediately redirected to a UTORauth page to authenticate, then back to MarkUs.)
  • All grades will be released in Markus and will be announced in Piazza.
Participation

You should not expect that you would learn course materials only by participating in lectures. The major part of the learning happens outside of the class by studding the materials and working on the assignments and exercises. But yet, lectures and tutorials are both important parts of your learning. The lectures' goal is to provide context and motivation for the materials, and to answer questions that arise while you're learning something new. Tutorials' goal is to practice applying the materials you've learned into new problems. The more problems YOU solve, the deeper understanding you gain. TAs will be present to answer questions and provide guidance when something does not make sense.

Why should you attend the lectures?
  • Studies show that students who attend the lectures, they’ll remember the course materials easier and longer. Because emotional involvement makes the brain remember better! Participating in the lectures, forces you to pay close attention to the course concepts and think critically about the subject at hand. This is a good way to remember the course materials over the course of the semester and it sure beats having to cram at the last minute!

  • If you miss lectures and try to learn the material on your own by reading the textbook, you would not be missing any of the technical content of the course. But you may not see all of the connections that run throughout the material, and you may find some of the topics difficult to understand without someone to point out some of those connections.

  • Participating the lectures is a good way to get to know your fellow students. You’ll also catch the Instructor's attention. It shows that you’re open and sociable.

  • Last but not least, you’ll have the chance to participate in the course's fun games and win little prizes as shown here! :)

Group work

"Two heads are better than one."

  • We strongly encourage you to work in a group for your assignments. Group work can help you develop a host of skills that are increasingly important in the professional world. You would share diverse perspectives and pool knowledge and skills. Both explaining and listening to the concepts would result in a deeper understanding of the materials.

  • Note that group work does not mean that you split the tasks in a way that you work on smaller parts of the assignments, individually. Everyone should be involved in working on all the questions and all the assignments.