Skip to content

Latest commit

 

History

History
166 lines (127 loc) · 7.64 KB

File metadata and controls

166 lines (127 loc) · 7.64 KB

CSE 439 — Distributed and Parallel Computing

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.

Grading

Component Count Weight
Midterm 1 30%
Assignments 5 20%
Final 1 50%

Five assignments — the highest assignment count of any course this semester.

Weekly plan

# 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

How to study with this repository

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.sh

Install 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 your own ## Notes — <Name> (<term>) heading at the bottom of each week note — see Taking notes.

Labs

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.

The lab code is shared and kept working; it is not filed by term because it is the course's permanent starting material.

Worked examples

assignments/2023-2024-spring-mustafa-arinmis/ 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.

Textbook and slides

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.

Layout

README.md        This page
course-info.md   Glossary (Turkish ↔ English)
weeks/NN-*.md    One file per week: the shared plan on top, everyone's notes below
labs/            Lab code, kept working
assignments/     Coursework, one folder per <term>-<person> — including a previous student's CSE 440 work
exams/           Past papers (none collected yet) and how to add one
resources/       Syllabus PDF, slides/ (the authors' chapter slides, 12 decks)

Taking notes

Open the week, scroll to the bottom, write under your own heading:

## Notes — <Name> (<term>)
### Lecture
### Worked out by hand
### Questions
### Exam-worthy

Add your heading below the existing ones and never edit someone else's section — different sections merge in git without conflicts. Everything under your own heading is yours. The shared plan at the top of the week is not — if the course changed, fix it there so the next person gets the corrected version.

Who changes what

What Who edits it When
Top of weeks/NN-*.md (goals, reading, practice) anyone Only when the course itself changes — a new topic, a better reading, a correction. Never for personal notes.
## Notes — <you> in a week file only you Every week. This is your notebook.
course-info.md, exams/README.md anyone When you learn something durable: a new exam pattern, a better source.
assignments/<term>-<you>/ only you Your assignments, projects, submissions. Use a lowercase, hyphenated name — 2026-2027-fall-efe-kurucay, not Efe Kuruçay. Material from a term whose author is not known goes in assignments/<term>-unattributed/.
resources/<term>/ anyone in that term Slides, syllabus and lab sheets the instructor issued that term — they are the same for everyone taking the course that term.
exams/ anyone When you get hold of a new paper — blank or answered. Put the writer's surname in the filename (2026-2027-final-answered-altungoz.pdf). Exam papers never go under assignments/.

Two students in different years never touch the same file except to improve the shared plan — which is the point.

Terms

Term Instructor Schedule Midterm Final Notes
Spring 2023-2024 — — — — Mustafa Arınmış — two homeworks and a midterm project, from when the course was coded CSE 440: assignments/2023-2024-spring-mustafa-arinmis/
Fall 2026-2027 TBD — fill in during week 1 TBD TBD TBD Efe — in every week file

When you take the course, add a row naming the instructor and dates, put your assignments under assignments/<term>-<you>/ and your notes in the week files. Keep the shared plan in weeks/ and course-info.md general.