ece5960

Advanced Programming for Computer Design Problems

Stars
18

Advanced Programming for Computer Design Problems

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.

Class Logistics

Syllabus

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 Notes

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 -

Grade

The grade calculated so far is available here.

Online Access

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)

How to Compile Practice Problems

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