The course (ECE 5960-023/6960-025) teaches you how to write good programs with a specific focus on solving computer design problems. You will gain hands-on experience in writing C++/Python code for implementing important data structures and algorithms, such as graphs, dynamic programming, and machine learning that are fundamental to this domain.
- Instructor: Prof. Tsung-Wei Huang
- Email: tsung-wei.huang@utah.edu
- Office: MEB 2124
- Time: 3:30 PM - 6:30 PM every Thursday
- Room: MEB 2555
- Webpage: https://github.com/tsung-wei-huang/ece5960
- Scoring
- In-class practice: 40 points
- Programming Assignment 1: 20 points
- Programming Assignment 2: 20 points
- Programming Assignment 3: 20 points
- No Exams
- Office hour: 1-3 PM every Wed (feel free to email for additional appointments)
- Textbook: No
- Utah ECE course catalog
The class will teach you the following topipcs:
- Computer design automation flows and problems
- Modern C++ programming language (idioms, STL, etc.)
- Core guideline and best practice for programming
- Performance tuning and optimization
- Implementation of important data structures and algorithms
- Parallel and heterogeneous computing
- Other advanced topics and new research trends
Lecture | Topics | Slides | Practice | Assignment | Due | Note |
---|---|---|---|---|---|---|
2020/1/9 | Introduction | lecture1 | icp1 | hw0 | - | CADE access |
2020/1/16 | Divide and Conquer (I) | lecture2 | icp2 | - | - | - |
2020/1/23 | Divide and Conquer (II) | lecture3 | icp3 | - | icp2 | - |
2020/1/30 | Stack, Queue, and Floorplan | lecture4 | icp4 | hw1 | icp3 | - |
2020/2/6 | Hash Set | lecture5 | icp5 | - | icp4 | - |
2020/2/13 | Disjoint Set and Binary Search | lecture6 | icp6 | - | - | - |
2020/2/20 | Graph Algorithms (I) | lecture7 | icp7 | - | icp6 | - |
2020/2/27 | no class | - | - | - | hw1 | - |
2020/3/5 | Graph Algorithms (II) | lecture8 | icp8 | hw2 | icp7 | - |
2020/3/19 | Graph Algorithms (III) | lecture9 | icp9 | - | icp8 | online |
2020/3/26 | Graph Algorithms (IV) | lecture10 | icp10 | - | icp9 | |
2020/4/2 | Image Segmentation | - | - | hw3 | icp10 | - |
2020/4/9 | Range Query | lecture12 | icp12 | - | - | - |
2020/4/16 | Research Overview | lecture13 | icp13 (course evaluation) | - | - | |
2020/4/29 | - | - | - | - | hw3 | - |
The grade calculated so far is available here.
Due to the COVID-1 pandemic, we are following the University policy to move this course online. We will be using zoom to stream our course starting from 3/19/20.
- Zoom meeting link: https://utah.zoom.us/j/2468214418
- Meeting ID: 246 821 4418
- One tap mobile +13462487799,,2468214418# US (Houston)
- One tap mobile +16699006833,,2468214418# US (San Jose)
In order to compile the practice problems we will be doing in this class you will need the GNU C++ Compiler (G++).
To correctly compile programs for this class you must specify C++11 with the -std=c++11
flag. You will also need to specify an output file for your program's binary executable with the -o
flag. Here is an example:
g++ my-program.cpp -std=c++11 -o my-program
You can execute this program in the same directory by running:
./my-program
And you can specify an input file my-program.in
by using input redirection:
./my-program < my-program.in
To check your compiler version you can run:
g++ -v
You can also enable compiler optimization with the -O2
flag.
Finally, on some systems, you may need to install the GNU C++ Compiler.
MacOS
You'll need to install XCode on the Apple Store
https://apps.apple.com/us/app/xcode/id497799835?mt=12
CentOS (EL7 Distros)
sudo yum update && sudo yum clean all
sudo yum install gcc-c++ -y
Ubuntu (Debian likes)
sudo apt-get update
sudo apt-get install build-essential