Uppsala Architecture Research Team
Teaching
The Uppsala Architecture Research Team offers courses in architecture, parallel programming, high-performance programming, and large-scale projects at the undergraduate, masters, and graduate levels.
Undergraduate Courses
Introduction to Computer Architecture
The basics of how a computer is built and executes code. (undergraduate level)
- Topics: instruction set architecture, instruction encoding, pipelining, hazards, caches, branch prediction, virtual memory, basic logic design.
- Details:
- K/Frist students: Period 1, 5hp, grading: U, 3, 4, 5
- IT/DV students: Periods 3&4, 10hp, grading: U, 3, 4, 5
- Instruction: Online lectures, seminars, labs
- Assessment: Labs, presentations, final exam
- Requirements: Computer programming II or equivalent
- Contact: David Black-Schaffer or Stefanos Kaxiras
Masters-level Courses
Accelerating Systems with Programmable Logic Components
An introduction to the development of accelerators using Field-Programmable Gate Arrays (FPGAs). (masters level)
- Topics: Syntax and semantics of Verilog HDL, Simulation and synthesis, Design and implementation of testbench, Integration of hardware accelerators at the system- and software-level for SoC.
- Details: Periods 1&2, 10hp, grading: U, 3, 4, 5
- Instruction: Online lectures, seminars, labs, project
- Assessment: Labs, Projects
- Requirements: 120 ECTS credits of which at least 60 in computer science, including Introduction to Computer Architecture.
- Contact: Yuan Yao
Advanced Computer Architecture
Advanced details and pitfalls of modern high-performance processors. (masters level)
- Topics: out-of-order processors, SIMD, caches and prefetching, instruction parallelism, atomic operations, memory ordering, coherency, optimization, speculation.
- Details: Periods 3&4, 10hp, grading: U, 3, 4, 5
- Instruction: Online lectures, seminars, labs
- ^KAssessment: Labs, final exam
- Requirements: 120 ECTS credits of which at least 60 in computer science, including Introduction to Computer Architecture.
- Contact: Stefanos Kaxiras
Low-level Parallel Programming
Program parallel and heterogeneous systems close to the metal. (masters level)
- Topics: manual threading, compiler-directed parallelization (OpenMP), task-based programming, heterogeneous programming (CPU+GPU, CUDA).
- Details: Period 3, 5hp, grading: U, 3, 4, 5
- Instruction: Online lectures, seminars
- Assessment: Participation, labs, project (oral & written)
- Requirements: 120 ECTS credits of which at least 60 in computer science, including a second course in programming and experience programming in C. (You are encouraged to take this course together with Advanced Computer Architecture.)
- Contact: Chang Hyun Park
Parallel Programming for Efficiency
Get the best performance and energy efficiency from parallel systems. (masters level)
- Topics: memory system behavior, load balancing, synchronization, power efficiency, profiling, optimization, heterogeneous programming.
- Details: Period 1, 5hp, grading: U, 3, 4, 5
- Instruction: Online lectures, seminars
- Assessment: Participation, labs, project (oral & written)
- Requirements: 120 ECTS credits of which at least 60 in computer science, ^Kincluding Advanced Computer Architecture and Low-Level Parallel Programming
- Contact: Yuan Yao
Project IT
Large-scale project on many-core systems with a focus on energy-efficiency. (masters level)
- Topics: building parallel systems from power-efficient multicores, extending the capabilities of existing hardware and software systems with an emphasis on power-efficiency, hardware and operating system support, parallel languages and applications, networking.
- Details: Periods 1&2, 30hp, grading: U/G
- Instruction: Seminars and large-scale project work
- Assessment: Project, presentations
- Requirements: 150 ECTS credits computer science/technology, of which at least 30 at the advanced level, willingness to learn new computer languages and systems, sufficient background to research and implement shared memory implementations on a distributed machine via OS communication.
- Contact: Stefanos Kaxiras
Ph.D.-level Courses
Introduction to Research in Computer Architecture
New Ph.D. students will learn a range of tools and techniques used in computer architecture research, as well as how to analyze and present results, and techniques for getting the most out of research papers.
- Topics: memory hierarchy simulation, modeling, analysis; data analysis; presentations; reading research papers. Tools covered include pin, statistical cache modeling, gem5 simulation, hardware performance counters, and LLVM.
- Details: Given as needed. 6-weeks, 20h/week. 10hp. Syllabus
- Instruction: Small group (2-3) projects and report; weekly paper reading assignments.
- Assessment: Project, report, and presentation.
- Requirements: This is a course for new PhD students to get them started with modern tools and techniques for architecture research.
- Contact: David Black-Schaffer
Energy Efficient Computing
This course is run as a Program Committee Meeting. Students have to *review* papers and discuss them together in weekly meetings.
- Details: Period 1 or 3
- Instruction: Conference review process, discussions and reading papers
- Assessment: Reviews and participation
- Requirements: This course is aimed at PhD students who want to immerse themselves in current computer architecture research.
- Contact: Stefanos Kaxiras
Topics. Each instance of the course examines a different topic. Examples are:
- Transactional Memory
- Distributed Shared Memory
- Deep Neural Network Accelerators
- Big Data Acceleration
- Coherence and Consistency
- Great Papers in Computer Architecture
- Advanced Microarchitectures
- Hot topics in energy-efficient computing.
Contact Stefanos Kaxiras if you are interested in having one of these topics in an upcoming instance of the course.
Advanced Computer Architecture Readings
This course is also run as a Program Committee Meeting. Students have to *review* papers from main conferences in the architecture field (ISCA, HPCA, MICRO, ISPASS, ASPLOS, HIPEAC) and discuss them together in weekly meetings, adopt the role of PC Chair, write an overview report and final presentation on applicability on their research projects.
- Instruction: Conference review process, discussions and reading papers
- Assessment: Reviews and participation
- Requirements: This course is aimed at PhD students who want to immerse themselves in current computer architecture research.
- Contact: David Black-Schaffer
Topics. Each instance of the course examines a different topic. Examples are:
- Caches
- Memory Models
- Simulation Techniques
- Microarchitecture advancements
- Compilers
- Heterogeneous Systems