Akdeniz University · Computer Engineering (English) · Semester 7 · 6 ECTS
An open study archive for this course. A week-by-week plan built from the official syllabus, plus working MPI and pthreads lab code you can compile and run.
| Component | Count | Weight |
|---|---|---|
| Midterm | 1 | 30% |
| Assignments | 5 | 20% |
| Final | 1 | 50% |
Five assignments — the highest assignment count of any course this semester.
| # | Topic | Note |
|---|---|---|
| 1 | Introduction to parallel programming | weeks/01 |
| 2 | Parallel programming platforms | weeks/02 |
| 3 | Principles of parallel algorithm design | weeks/03 |
| 4 | Basic communication operations I | weeks/04 |
| 5 | Basic communication operations II | weeks/05 |
| 6 | Analytical modeling of parallel programs | weeks/06 |
| 7 | Programming with message passing (MPI) | weeks/07 |
| 8 | Shared address space platforms | weeks/08 |
| 9 | Midterm | weeks/09 |
| 10 | Dense matrix algorithms I | weeks/10 |
| 11 | Dense matrix algorithms II | weeks/11 |
| 12 | Sorting I | weeks/12 |
| 13 | Sorting II | weeks/13 |
| 14 | Graph algorithms | weeks/14 |
1. Open the week you are on in weeks/ — goals, concepts with their
actual cost formulas, and a practice list.
2. This course is learned by running code, not by reading. Every week's
practice list points at something in labs/ to build and run.
# MPI
mpicc labs/mpi/openmpi_hello.c -o hello && mpirun -np 4 ./hello
# pthreads
gcc labs/shared-memory/mythread.c -o mythread -lpthread && ./mythread
# matrix multiplication, with the timing harness
cd labs/matrix-multiplication && ./test.shInstall MPI first: brew install open-mpi on macOS, apt install libopenmpi-dev openmpi-bin on Debian/Ubuntu.
3. Measure everything. The exam asks for speedup, efficiency and isoefficiency,
so get in the habit of timing at 1, 2, 4 and 8 processes and computing
S = T₁/T_p and E = S/p yourself.
4. Write under ## My notes at the bottom of each week note.
| Path | What it is |
|---|---|
labs/mpi/ |
Hello world, send/receive, scatter, find-max — the MPI starting points |
labs/shared-memory/ |
A pthreads example |
labs/matrix-multiplication/ |
Matrix multiply with a timing script, a visualizer, results, and a write-up on spatial locality |
labs/missing-numbers/ |
A standalone exercise |
Compiled binaries are ignored by git — build them yourself.
terms/2023-2024-spring/ holds a previous student's two
homeworks and midterm project from when the course was coded CSE 440. The midterm
report — parallel 5000×5000 matrix multiplication in MPI, with speedup and
efficiency measured against a single-processor baseline — is the clearest model of
what the course expects a report to look like.
The syllabus's only cited source is Grama, Gupta, Karypis & Kumar, Introduction to
Parallel Computing, 2nd ed., Addison-Wesley. The book itself is not here, but
the authors publish their own slides for every chapter and those are:
resources/slides/ — 12 decks, 773 slides, covering the whole
book. Every week note links the deck for its chapter.
Source: Ananth Grama's CS525 page, Purdue.
| Week | Chapter deck |
|---|---|
| 1 | Ch. 1 Introduction |
| 2 | Ch. 2 Parallel Programming Platforms |
| 3 | Ch. 3 Principles of Parallel Algorithm Design |
| 4-5 | Ch. 4 Basic Communication Operations |
| 6 | Ch. 5 Analytical Modeling |
| 7 | Ch. 7 Programming Message Passing Platforms |
| 8 | Ch. 6 Programming Shared Address Space Platforms |
| 10-11 | Ch. 8 Dense Matrix Algorithms |
| 12-13 | Ch. 9 Sorting |
| 14 | Ch. 10 Graph Algorithms |
Chapters 11 (discrete optimization) and 12 (dynamic programming) are also in
resources/slides/ — beyond the syllabus, but they connect straight to CSE 413.
| Path | What it holds |
|---|---|
weeks/ |
The study plan, one note per week |
docs/ |
Syllabus summary, glossary |
labs/ |
Lab code, kept working |
terms/ |
One folder per cohort — including a previous student's CSE 440 coursework |
resources/slides/ |
The authors' chapter slides, 12 decks |
resources/syllabus/ |
Syllabus PDF |
| File | Who edits it | When |
|---|---|---|
weeks/NN-*.md |
anyone | Only when the course itself changes — a new topic, a better reading, a correction. Never for personal notes. |
docs/*.md |
anyone | When you learn something durable: a new exam pattern, a better source. |
terms/<your-term>/people/<you>/notes/week-NN.md |
only you | Every week. This is your notebook. |
terms/<your-term>/people/<you>/ |
only you | Your assignments, projects, submissions. |
terms/<your-term>/course/ |
anyone in that term | Slides, syllabus and lab sheets the instructor issued. |
exams/past/<term>/ |
anyone | When you get hold of a new paper — blank or answered. Exam papers never go under terms/. |
Two students in different years never touch the same file except to improve the shared plan — which is the point.
Create terms/<YYYY>-<YYYY>-<term>/ with a README.md naming the instructor and
dates, and put your assignments and notes there. Keep weeks/ and docs/ general.