# CSC2224

Parallel Computer Architecture and Programming, Fall 2020

### General Course Information

 Instructor: Prof. Gennady Pekhimenko Discussion Board: [Piazza] Syllabus: [PDF] Zoom Link: [Zoom]

### Course Description

The goal of this course is to build a strong understanding of the fundamentals of the architecture of parallel computers and efficient programming for them. We will examine how architectures are designed to exploit and extract different types of parallelism. The focus will be on fundamentals, tradeoffs in parallel architecture design, and cutting-edge research. Architectures studied may include parallel microprocessors, GPUs and FPGAs.

### Prerequisites

This course is not intended to be your first computer architecture course. It is geared toward students who have already had such a course (or some equivalent) as undergraduates. If you have never taken a computer architecture course before (or at least a Computer Organization class), it is still possible to take this course provided that you are willing to spend some additional time catching up on your own. It will also be helpful if you have some familiarity with the features of modern processor architectures (e.g., the memory hierarchy, pipelining, SIMT, and vector instructions). If you feel uncertain about whether you are adequately prepared to take this class, please discuss this with the instructor.

 Research Project 50% A major focus of this course is the project. We prefer that you work in groups of two on the project, although a group of up to three people may be permitted depending on the scale of the project (ask the instructor for permission before forming a group of three). The project is intended to be a scaled-down version of a real research project. The project must involve an experimental component, i.e. it is not simply a paper and pencil exercise. You will present your findings in a written report and also during a poster/presentation session in the last day of class. Start thinking about potential project ideas soon! Paper Reviews 20% The intent of the paper reviews is to familiarize you with the process of reviewing manuscripts. For those papers that you are not presenting yourself, you will assume the role of conference reviewer, and write a short (3-4 paragraph) critical review of the paper. Briefly summarize the paper in the first paragraph. In the latter paragraphs, provide strengths and weaknesses of the paper (i.e., what you like and dislike about the paper in terms of its key ideas), and most importantly, your critical thoughts on how to potentially improve the work. Paper Presentation 20% Every group will present $$N$$ papers related to their project topic (where $$N$$ is the group size). The intent is to teach students to read, analyze, summarize, and properly present the state-of-the-art research work in their area of interest. The length of the presentation should be around $$15\times N$$ minutes. The presentation schedule will be posted on the course website after the deadline of project proposal. Class Participation 10% In general, we would like everyone to do their part to make this an enjoyable interactive experience (one-way communication is no fun). Hence in addition to attending class, we would like you to actively participate by asking questions, joining in our discussions, etc. Some classes are set aside entirely for student-led in-class discussions on active areas of research and innovation in computer architecture and parallel programming. All students are expected to lead one of these discussions.