# CPTS 360

***

### Overview

This course aims to equip students with the skills to craft system software, utilize system capabilities, and construct small-to-medium scale software systems. Throughout this course, students will *(a)* develop and execute C programs, *(b)* comprehend the fundamental methods of creating applications through libraries and interfacing with services, *(c)* understand memory layout, program, and process representations, and *(d)* implement Unix/Linux abstractions for memory management, processes, process control, inter-process communication, scheduling, file systems, and networks.

* **Instructor:** [Monowar Hasan](http://monowarhasan.info/)
* **Email:** <monowar.hasan@wsu.edu>
* **Class time:** Tuesday, Thursday 9:10-10:25 AM
* **Class Location:** Pullman Campus, [Carpenter Hall 102](https://li.wsu.edu/buildings-and-spaces/general-university-classrooms/classroom-specs/carpenter-102/)
* **Office Hours (EME B53):** Tuesday Noon-1 PM, Thursday 11 AM-noon, or by appointment
* **Course Staff (TA):** \
  Bruno Sanchez Parra (<bruno.sanchezparra@wsu.edu>)\
  Matthew Bruggeman (<matthew.bruggeman@wsu.edu>)\
  Tamim Ahmed (<tamim.ahmed@wsu.edu>)\
  YuQun Song (<yuqun.song@wsu.edu>)
* **TA Office Hours:** \
  Monday and Wednesday, 10:30-11:30 AM, ~~Dana 343~~ ~~Owens Library 543~~ (Bruno)\
  Monday and Wednesday, 11:15 AM-1:00 PM, ~~Sloan 340~~ (Matthew)\
  Friday 11 AM-Noon, ~~Sloan 341~~ (Tamim)\
  Friday 1 PM-2 PM, ~~Sloan 340~~ (YuQun)&#x20;

<mark style="color:red;">**Note: The location of TA office rooms has changed due to renovations in Sloan. Check Canvas for the most updated room numbers.**</mark>

> <mark style="color:orange;">**Important:**</mark> To better prepare yourself for office hours and posting Teams interactions, read carefully the excellent guides from [Gabriel Parmer](https://www2.seas.gwu.edu/~gparmer/):
>
> * [Preparing and presenting yourself at office hours](https://www2.seas.gwu.edu/~gparmer/resources/2021-09-20-Office-Hours-HOWTO.html)
> * [Expected norms for online interactions](https://www2.seas.gwu.edu/~gparmer/resources/2020-08-01-Online-Conduct.html)

***

### Acknowledgment

This course uses materials from [Randal E. Bryant](http://www.cs.cmu.edu/~bryant), [David R. O'Hallaron](http://www.cs.cmu.edu/~droh), [Remzi Arpaci-Dusseau](http://www.cs.wisc.edu/~remzi),  [Andrea Arpaci-Dusseau](https://www.cs.wisc.edu/~dusseau), [Kung-Chi Wang](https://school.eecs.wsu.edu/faculty/profile/?nid=kwang), [Bob Lewis](https://users.tricity.wsu.edu/~bobl/), [Youjip Won](https://oslab.kaist.ac.kr/professor-youjip-won/?ckattempt=1), [Tianyin Xu](https://tianyin.github.io), [Mathias Payer](http://nebelwelt.net), [Sanidhya Kashyap](https://sanidhya.github.io), [Peter Reiher](https://samueli.ucla.edu/people/peter-reiher/), and [Hugh Lauer](https://users.wpi.edu/~lauer/).

***

### Course Syllabus

The course syllabus is available [here](https://monowarhasan.info/courses/CPTS360_Syllabus_FA24.pdf).

***

### Textbook

1. <mark style="background-color:purple;">**\[CSAPP]**</mark> [Computer Systems: A Programmer's Perspective](https://www.pearson.com/en-us/subject-catalog/p/computer-systems-a-programmers-perspective/P200000003479/9780134092669), 3rd edition, by [Randal E. Bryant](https://www.cs.cmu.edu/~bryant/) and [David R. O'Hallaron](http://www.cs.cmu.edu/~droh/).
2. <mark style="background-color:blue;">**\[OSTEP]**</mark> [Operating Systems: Three Easy Pieces](https://pages.cs.wisc.edu/~remzi/OSTEP/) by [Remzi H. Arpaci-Dusseau](http://www.cs.wisc.edu/~remzi) and [Andrea C. Arpaci-Dusseau](http://www.cs.wisc.edu/~dusseau). &#x20;
3. <mark style="background-color:green;">**\[LKMPG]**</mark> [The Linux Kernel Module Programming Guide](https://sysprog21.github.io/lkmpg/), Peter Jay Salzman, Michael Burian, Ori Pomerantz, Bob Mottram, Jim Huang.      *This book is helpful for Lab 3.*

***

### Schedule and Class Materials

**Note:** *The lectures and code files are hosted on the WSU OneDrive cloud. You need WSU credentials to access the materials.*

<table><thead><tr><th width="75" data-type="number">WK</th><th width="85">Date</th><th width="208">Topic</th><th width="105">Slides</th><th width="258">Remarks</th></tr></thead><tbody><tr><td>1</td><td>08/20 <br>(Tue)</td><td>Course logistics &#x26; overview</td><td><a href="https://emailwsu-my.sharepoint.com/:f:/g/personal/monowar_hasan_wsu_edu/EpaOKGUPYddDsrC_lRlCVuABS4OlB1hPO6FjMkZCTE_W9g?e=5C0IDw">Lecture 01</a></td><td><p><mark style="color:green;"><strong>Self-study:</strong></mark></p><p>See <a href="#pa">Git Tutorials</a><br>Check Linux VM installation:</p><ul><li><a href="https://ubuntu.com/tutorials/how-to-run-ubuntu-desktop-on-a-virtual-machine-using-virtualbox#1-overview">Windows, Intel-based Mac, and Linux</a></li><li>Apple Silicon Mac (<a href="https://docs.getutm.app/guides/ubuntu/">from scratch</a>, <a href="https://docs.getutm.app/guides/ubuntu/">prebuild-images</a>)</li></ul></td></tr><tr><td>1</td><td>08/22 <br>(Thu)</td><td>C recap</td><td><a href="https://emailwsu-my.sharepoint.com/:f:/g/personal/monowar_hasan_wsu_edu/EtWvXU3LQHBGh0oFRQQfYVsB5V-bl5D8GNyyVuj_FHEDDQ?e=ddaApJ">Lecture 02</a></td><td><p><mark style="color:green;"><strong>Lecture Reference:</strong></mark> </p><p><mark style="background-color:purple;"><strong>CSAPP</strong></mark> 6.2</p><p><br><mark style="color:green;"><strong>Self-study:</strong></mark></p><p><mark style="background-color:purple;"><strong>CSAPP</strong></mark> 6.1.1 (Page 581-582), 6.1.4</p></td></tr><tr><td>2</td><td>08/27<br>(Tue)</td><td>Computer memory</td><td><a href="https://emailwsu-my.sharepoint.com/:f:/g/personal/monowar_hasan_wsu_edu/EsbIQxuXuLpDtmAQXbT-bw4BBiYdVhBMry2w0Rk0Wsx5Mg?e=ObWJi1">Lecture 03</a></td><td><p><mark style="color:green;"><strong>Lecture Reference:</strong></mark> </p><p><mark style="background-color:purple;"><strong>CSAPP</strong></mark> 6.2, 6.3, 6.4.1-6.4.2 (before Conflict Misses)</p></td></tr><tr><td>2</td><td>08/29<br>(Thu)</td><td>Computer memory (contd.)</td><td><a href="https://emailwsu-my.sharepoint.com/:f:/g/personal/monowar_hasan_wsu_edu/EqpzpCUmlSZGk5NWmw4yMIwB8XnR3K1r2cd6khHtQ2Dr8w?e=0gTX7A">Lecture 04</a></td><td><p><mark style="color:green;"><strong>Lecture Reference:</strong></mark> </p><p><mark style="background-color:purple;"><strong>CSAPP</strong></mark> 6.4.2 (before Conflict Misses)</p><p><br><mark style="color:green;"><strong>Self-study:</strong></mark></p><p><mark style="background-color:purple;"><strong>CSAPP</strong></mark> 6.4.2 (Conflict Misses)</p></td></tr><tr><td>3</td><td>09/03<br>(Tue)</td><td>Computer memory (contd.)</td><td><a href="https://emailwsu-my.sharepoint.com/:f:/g/personal/monowar_hasan_wsu_edu/EoNi4VCJFrJIrI0nr351xmoBCk37Ieqtqo35FvjtdkzsUw?e=n435Dg">Lecture 05</a></td><td><p><mark style="color:green;"><strong>Lecture Reference:</strong></mark> </p><p><mark style="background-color:purple;"><strong>CSAPP</strong></mark> 6.4.3</p><p><br><mark style="color:orange;">Lecture shortened due to IT issues in the classroom.</mark><br><mark style="color:blue;"><strong>PA 0</strong></mark> <mark style="color:blue;"><strong>released</strong></mark></p></td></tr><tr><td>3</td><td>09/05<br>(Thu)</td><td>Computer memory (contd.)</td><td><a href="https://emailwsu-my.sharepoint.com/:f:/g/personal/monowar_hasan_wsu_edu/EjprNN_c2wNCjGXgesj4pssBum7OWK9pfM1wlhy9p2WoNQ?e=scN1N6">Lecture 06</a></td><td><p><mark style="color:green;"><strong>Lecture Reference:</strong></mark> </p><p><mark style="background-color:purple;"><strong>CSAPP</strong></mark> 6.4.5-end, 6.5, 6.6.2, 6.6.3 </p><p><br><mark style="color:green;"><strong>Self-study:</strong></mark></p><p>6.4.4</p></td></tr><tr><td>4</td><td>09/10<br>(Tue)</td><td>Cache practice problem solution<br></td><td><a href="https://emailwsu-my.sharepoint.com/:f:/g/personal/monowar_hasan_wsu_edu/EuT0qovv6UpHnz-wN0kixsABA_nBX7Fw1M95xdND2bSImA?e=gLUkpq">Lecture 07</a></td><td></td></tr><tr><td>4</td><td>09/12<br>(Thu)</td><td>Cache practice problem solution<br>Linking</td><td><a href="https://emailwsu-my.sharepoint.com/:f:/g/personal/monowar_hasan_wsu_edu/Em8YwrtszgBEuY25Nc3frSEBgL5loIR7n6Lnl_454td9YA?e=MKNakf">Lecture 08</a></td><td><p><mark style="color:green;"><strong>Lecture Reference:</strong></mark> </p><p><mark style="background-color:purple;"><strong>CSAPP</strong></mark> 7.1, 7.2, 7.3, 7.5</p><p><br><mark style="color:green;"><strong>Self-study:</strong></mark><br>7.4<br><mark style="color:red;"><strong>PA 0 due</strong></mark></p></td></tr><tr><td>5</td><td>09/17<br>(Tue)</td><td><mark style="color:green;"><strong>No Class</strong></mark><br><br></td><td></td><td><mark style="color:purple;">MH is traveling for a conference</mark><br><mark style="color:blue;"><strong>PA 1</strong></mark> <mark style="color:blue;"><strong>released</strong></mark></td></tr><tr><td>5</td><td>09/19<br>(Thu)</td><td><mark style="color:green;"><strong>No Class</strong></mark></td><td></td><td><mark style="color:purple;">MH is traveling for a conference</mark></td></tr><tr><td>6</td><td>09/24<br>(Tue)</td><td>Linking (contd)</td><td><a href="https://emailwsu-my.sharepoint.com/:f:/g/personal/monowar_hasan_wsu_edu/Emyo4eRHQB9OmQJdRJ-8sBcBcvDmP-VpKlMYHyry6zwiLg?e=vpuJcW">Lecture 09</a></td><td><p><mark style="color:green;"><strong>Lecture Reference:</strong></mark> </p><p><mark style="background-color:purple;"><strong>CSAPP</strong></mark> 7.6, 7.10, 7.11</p><p><br><mark style="color:green;"><strong>Optional Reading:</strong></mark> </p><p><mark style="background-color:purple;"><strong>CSAPP</strong></mark> 7.7<br><br><mark style="color:green;"><strong>Self-study:</strong></mark></p><p><mark style="background-color:purple;"><strong>CSAPP</strong></mark> 7.4 (ELF file format), 7.14, 7.15 <br>Run <a href="https://emailwsu-my.sharepoint.com/:f:/g/personal/monowar_hasan_wsu_edu/EqO3WCWNRkFKqcTbHWtoTUcBxiaTxv2Owya12N2by1hhEQ?e=vh9BxQ">code examples</a></p></td></tr><tr><td>6</td><td>09/26<br>(Thu)</td><td>Library Interpositioning<br>Scheduling</td><td><a href="https://emailwsu-my.sharepoint.com/:f:/g/personal/monowar_hasan_wsu_edu/EnGm8KSTItJJoIogQ5fp1d4B3OGUGQXVucVu-zbqp4vayA?e=gFibgC">Lecture 10</a></td><td><p><mark style="color:green;"><strong>Lecture Reference:</strong></mark> </p><p><mark style="background-color:purple;"><strong>CSAPP</strong></mark> 7.13.1-7.13.3</p><p><br><mark style="color:green;"><strong>Self-study:</strong></mark><br>Run <a href="https://emailwsu-my.sharepoint.com/:f:/g/personal/monowar_hasan_wsu_edu/EoV_izjDFTlHvYyyxzkIJq0BAejkENBLQJr21zcRF3DXig?e=zZgtWA">code examples</a><br><br><mark style="color:purple;">Informal early feedback (</mark><a href="https://forms.office.com/r/UWakRTr9aT"><mark style="color:purple;">link</mark></a><mark style="color:purple;">)</mark><br><mark style="color:red;"><strong>PA 1 due</strong></mark></p></td></tr><tr><td>7</td><td>10/01<br>(Tue)</td><td>Scheduling<br>Mid-term review</td><td><a href="https://emailwsu-my.sharepoint.com/:f:/g/personal/monowar_hasan_wsu_edu/Eoijf5sPwdtJpO5OKgb5zcYBc_OMPCYwjfYQrOOMT4zNSw?e=YAfkff">Lecture 11</a></td><td><p><mark style="color:green;"><strong>Self-study:</strong></mark> </p><p><mark style="background-color:blue;"><strong>[OSTEP]</strong></mark> 6.1-6.3 (excluding Fig. 6.4)</p></td></tr><tr><td>7</td><td>10/03<br>(Thu)</td><td><mark style="color:red;"><strong>Mid-term Exam</strong></mark></td><td></td><td><mark style="color:orange;">Exam duration: <strong>60 minutes</strong></mark></td></tr><tr><td>8</td><td>10/08<br>(Tue)</td><td>Scheduling (contd.)</td><td><a href="https://emailwsu-my.sharepoint.com/:f:/g/personal/monowar_hasan_wsu_edu/Eq5b0b4jcGJCscye3ADTW_YBGwvcgIulcwuwNoTEiCXdOA?e=Oox1Fx">Lecture 12</a></td><td><p><mark style="color:green;"><strong>Lecture Reference:</strong></mark> </p><p><mark style="background-color:blue;"><strong>[OSTEP]</strong></mark>  7.1-7.10, 8.1-8.2</p><p><br><mark style="color:blue;"><strong>PA 2 released</strong></mark></p></td></tr><tr><td>8</td><td>10/10<br>(Thu)</td><td>Scheduling (contd.)</td><td><a href="https://emailwsu-my.sharepoint.com/:f:/g/personal/monowar_hasan_wsu_edu/EoloISK2K-1ItHjW8nR4xLUBTQFXuozBKsgw7ww4xF1m6A?e=cHSXIB">Lecture 13</a></td><td><p><mark style="color:green;"><strong>Lecture Reference:</strong></mark> </p><p><mark style="background-color:blue;"><strong>[OSTEP]</strong></mark>  8.5-8.6, 9.1-9.4, 9.6</p></td></tr><tr><td>9</td><td>10/15<br>(Tue)</td><td>Kernel programming</td><td><a href="https://emailwsu-my.sharepoint.com/:f:/g/personal/monowar_hasan_wsu_edu/EoDLmtSoGglCuky1059BfjIBK4op2jcjmivQW79B3Sx0lg?e=aMNnSh">Lecture 14</a></td><td><p><mark style="color:green;"><strong>Lecture Reference:</strong></mark> <br><mark style="background-color:blue;"><strong>[OSTEP]</strong></mark>  9.7<br><mark style="background-color:green;"><strong>[LKMPG]</strong></mark> 1-4<br><br><mark style="color:green;"><strong>Self-study:</strong></mark></p><p>Run <a href="https://emailwsu-my.sharepoint.com/:f:/g/personal/monowar_hasan_wsu_edu/EiC3sSEeK_5Nqd6U44ro834B9ng6FLN8GYmFYDKb9GXQ2g?e=Nz1vwQ">example kernel module</a></p></td></tr><tr><td>9</td><td>10/17<br>(Thu)</td><td>Kernel programming (contd.) </td><td><a href="https://emailwsu-my.sharepoint.com/:f:/g/personal/monowar_hasan_wsu_edu/EpAAP09RbvBNovT6dgkezScBh6qCPZFxsl-98f0T_Gh4jA?e=kXGHpJ">Lecture 15</a></td><td><p><mark style="color:green;"><strong>Lecture Reference:</strong></mark> <br><mark style="background-color:green;"><strong>[LKMPG]</strong></mark> 7.1-7.3<br><br><mark style="color:green;"><strong>Self-study:</strong></mark></p><p>Run <a href="https://emailwsu-my.sharepoint.com/:f:/g/personal/monowar_hasan_wsu_edu/ElKyNiMwjNlIiA9XgQAM1boB7sqPKUtYbk5Oz3QznOteXA?e=BoRqZP">example kernel module</a></p></td></tr><tr><td>10</td><td>10/22<br>(Tue)</td><td>Kernel programming (contd.) <br>Virtual memory (intro)</td><td><a href="https://emailwsu-my.sharepoint.com/:f:/g/personal/monowar_hasan_wsu_edu/Egv1GJfp3P5KiHmwo0Zt7pYBqD3IFnqh9e5uxEVgqQMpRA?e=8W5m7k">Lecture 16</a></td><td><p><mark style="color:green;"><strong>Lecture Reference:</strong></mark> <br><mark style="background-color:green;"><strong>[LKMPG]</strong></mark> 12.2, 14.2<br><br><mark style="color:green;"><strong>Self-study:</strong></mark> </p><p>Run <a href="https://emailwsu-my.sharepoint.com/:f:/g/personal/monowar_hasan_wsu_edu/EjLvIA_D1-5PtH8vULQ5yAEBiR60ubnTrEX2_R4cRnhZ_Q?e=eJzyXg">example kernel modules</a> <br><br><mark style="color:red;"><strong>PA 2 due</strong></mark><br><mark style="color:blue;"><strong>PA 3 released</strong></mark></p></td></tr><tr><td>10</td><td>10/24<br>(Thu)</td><td>Virtual memory</td><td><a href="https://emailwsu-my.sharepoint.com/:f:/g/personal/monowar_hasan_wsu_edu/Em2clvSwXAlOtedZxr1WCB8BWcTVfoaXVVqiypY6QWvuMQ?e=rDgSYu">Lecture 17</a></td><td><p><mark style="color:green;"><strong>Lecture Reference:</strong></mark> </p><p><mark style="background-color:purple;"><strong>CSAPP</strong></mark> 9.1-9.5, 9.6.1-9.6.4</p><p></p><p><mark style="color:green;"><strong>Self-study:</strong></mark> </p><p><mark style="background-color:purple;"><strong>CSAPP</strong></mark> Read 9.4 bullets, 9.7.2</p></td></tr><tr><td>11</td><td>10/29<br>(Tue)</td><td>Virtual memory</td><td><a href="https://emailwsu-my.sharepoint.com/:f:/g/personal/monowar_hasan_wsu_edu/ErQfTWpqmM1KpvgpcnTpzmoB1mdBkylA2hvdETeByRSU0g?e=Qv99n8">Lecture 18</a></td><td><p><mark style="color:green;"><strong>Lecture Reference:</strong></mark> </p><p><mark style="background-color:purple;"><strong>CSAPP</strong></mark> 9.7.2, 9.11</p></td></tr><tr><td>11</td><td>10/31<br>(Thu)</td><td>Process control<br></td><td><a href="https://emailwsu-my.sharepoint.com/:f:/g/personal/monowar_hasan_wsu_edu/ErsEUeATpadOoxSm6R1svtcBNIfytOksRgNE7ZECqyzsDw?e=1zMba1">Lecture 19</a></td><td><p><mark style="color:green;"><strong>Lecture Reference:</strong></mark> </p><p><mark style="background-color:purple;"><strong>CSAPP</strong></mark>  8.3, 8.4 (up to 8.4.4)</p><p></p><p><mark style="color:green;"><strong>Self-study:</strong></mark> </p><p><mark style="background-color:purple;"><strong>CSAPP</strong></mark>  8.2.3-8.2.5, Program-vs-Process (8.4.6)<br><br>Run <a href="https://emailwsu-my.sharepoint.com/:f:/g/personal/monowar_hasan_wsu_edu/Eo3T88brRW5HmFDIuPljJsgBwzBOZlTcB02Tfs4bXNykzw?e=iv0CHI">code examples</a></p></td></tr><tr><td>12</td><td>11/05<br>(Tue)</td><td>Signal<br>I/O</td><td><a href="https://emailwsu-my.sharepoint.com/:f:/g/personal/monowar_hasan_wsu_edu/EhWi8GxVCCJPsaZFqAG_IG0BzfsKnfIewG_rarsM43KcJA?e=MdmOvT">Lecture 20</a></td><td><p><mark style="color:green;"><strong>Lecture Reference:</strong></mark> </p><p><mark style="background-color:purple;"><strong>CSAPP</strong></mark>  8.5.1-8.5.3 — Signals</p><p><mark style="background-color:purple;"><strong>CSAPP</strong></mark>  10.1-10.8 — I/O</p><p></p><p><mark style="color:green;"><strong>Self-study:</strong></mark> </p><p><mark style="background-color:purple;"><strong>CSAPP</strong></mark>  Fig. 8.33 (signal-safe functions), 8.5.5 (Fig. 8.6—Correct signal handling) </p><p>Review <a href="https://emailwsu-my.sharepoint.com/:f:/g/personal/monowar_hasan_wsu_edu/Er1BQQk-uohClaglxMMkaoUBmf0QNucHb5nHfHYSbLSL1g?e=uHwo6Z">RIO library</a></p></td></tr><tr><td>12</td><td>11/07<br>(Thu)</td><td>I/O<br>Network programming</td><td><a href="https://emailwsu-my.sharepoint.com/:f:/g/personal/monowar_hasan_wsu_edu/EpOwZhpHrFdHi6UQpw4IV7gBR3dfqlijofKpAlYbxrcQkw?e=ub70o0">Lecture 21</a></td><td><p><mark style="color:green;"><strong>Lecture Reference:</strong></mark> </p><p><mark style="background-color:purple;"><strong>CSAPP</strong></mark>  10.9-10.12 — I/O<br><mark style="background-color:purple;"><strong>CSAPP</strong></mark>  11.1-11.3</p><p><br><mark style="color:red;"><strong>PA 3 due</strong></mark></p></td></tr><tr><td>13</td><td>11/12<br>(Tue)</td><td>Network programming </td><td><a href="https://emailwsu-my.sharepoint.com/:f:/g/personal/monowar_hasan_wsu_edu/ErVTWssS1bJJrJGg5lvwt74BjhMvOuFV6u9DEPsLg3ZP8A?e=2VFv9Z">Lecture 22</a></td><td><p><mark style="color:green;"><strong>Lecture Reference:</strong></mark> <br><mark style="background-color:purple;"><strong>CSAPP</strong></mark>  11.4 (before 11.4.1), 11.4.9, 11.5</p><p><mark style="color:green;"><strong>Self-study:</strong></mark> </p><p>Run <a href="https://emailwsu-my.sharepoint.com/:f:/g/personal/monowar_hasan_wsu_edu/Ej0k0I3t2sBLkeXoNjYTeXEBcCDKR9kCsC_1FBg6tDbRtA?e=ybO4ic">echo server/client example</a><br><br><mark style="color:blue;"><strong>PA 4 released</strong></mark></p></td></tr><tr><td>13</td><td>11/14<br>(Thu)</td><td>Network programming<br>Concurrent programming</td><td><a href="https://emailwsu-my.sharepoint.com/:f:/g/personal/monowar_hasan_wsu_edu/EiRHWbgM-MFEly7Yw5QyQHoBlhXunZlbaQ5pN0PAvowKKA?e=vlyHfc">Lecture 23</a></td><td><p><mark style="color:green;"><strong>Lecture Reference:</strong></mark> </p><p><mark style="background-color:purple;"><strong>CSAPP</strong></mark>  11.6 (NW)</p><p><mark style="background-color:blue;"><strong>[OSTEP]</strong></mark>  26.1-26.3 (Concurrency)<br></p><p><mark style="color:green;"><strong>Self-study:</strong></mark> </p><p>Run <a href="https://emailwsu-my.sharepoint.com/:f:/g/personal/monowar_hasan_wsu_edu/Eli6T22UrglJs0Qg7DFjxSEB2OlVTGBRCWNR5798ORQoOg?e=05TvbT">Tiny web server</a></p></td></tr><tr><td>14</td><td>11/19<br>(Tue)</td><td>Concurrent programming</td><td><a href="https://emailwsu-my.sharepoint.com/:f:/g/personal/monowar_hasan_wsu_edu/Eo3uOcn4wONGnx5wLZRCkzoBau7U1D3iulA9skSpHVbpXw?e=idvXkZ">Lecture 24</a></td><td><p><mark style="color:green;"><strong>Lecture Reference:</strong></mark> </p><p><mark style="background-color:blue;"><strong>[OSTEP]</strong></mark>  26, 27, 30.2</p><p></p><p><mark style="color:green;"><strong>Self-study:</strong></mark> </p><p>Run <a href="https://emailwsu-my.sharepoint.com/:f:/g/personal/monowar_hasan_wsu_edu/EliQVYaiDn5NlGzmAsozwtgBtoyNgqQGM0YN7HRhBG4-Vw?e=EN6LMc">code examples</a></p></td></tr><tr><td>14</td><td>11/21<br>(Thu)</td><td>Concurrency issues and bug<br>Recap &#x26; closing</td><td><a href="https://emailwsu-my.sharepoint.com/:f:/g/personal/monowar_hasan_wsu_edu/Eir8e26X3dlFpwgSoG8hKukBRfPUIbTFXuAFzFWR96nbKw?e=7jcjNn">Lecture 25</a></td><td><p><mark style="color:green;"><strong>Lecture Reference:</strong></mark> </p><p><mark style="background-color:blue;"><strong>[OSTEP]</strong></mark>  31.1, 31.2, 31.3, 31.6, 32. 2 (Only Atomicity-Violation Bugs), 32.3 (only Circular Wait &#x26;  DL Avoidance via Scheduling)</p><p></p><p><mark style="color:green;"><strong>Self-study:</strong></mark> </p><p><mark style="background-color:blue;"><strong>[OSTEP]</strong></mark>  Fig. 30.14, 31.7</p><p>Run<a href="https://emailwsu-my.sharepoint.com/:f:/g/personal/monowar_hasan_wsu_edu/Evn6-xY-oJJJlt4LWO_zaX0BeFW11twXLtsJ1T4URjX8ig?e=fpeYJ4"> code examples</a><br><mark style="color:red;"><strong>PA 4 due</strong></mark></p></td></tr><tr><td>15</td><td>11/26<br>(Tue)</td><td><mark style="color:green;"><strong>No Class</strong></mark><br></td><td></td><td><mark style="color:green;">Thanksgiving break</mark></td></tr><tr><td>15</td><td>11/28<br>(Thu)</td><td><mark style="color:green;"><strong>No Class</strong></mark><br></td><td></td><td><mark style="color:green;">Thanksgiving break</mark></td></tr><tr><td>16</td><td>12/03<br>(Tue)</td><td><strong>No Class</strong> (PA 4 demo sessions throughout the week)</td><td></td><td><mark style="color:red;"><strong>PA 4 demo will be scheduled in Week 16</strong></mark></td></tr><tr><td>16</td><td>12/05<br>(Thu)</td><td><strong>No Class</strong> (PA 4 demo sessions throughout the week)</td><td></td><td><mark style="color:green;">Done with classes!</mark></td></tr><tr><td>17</td><td><mark style="color:red;"><strong>Finals Week</strong></mark> </td><td><mark style="color:red;"><strong>Final Exam: 12/12/24</strong></mark><br><mark style="color:red;"><strong>8:00 AM - 10:00 AM @ Classroom</strong></mark></td><td></td><td><mark style="color:orange;">Exam syllabus: all lectures &#x26; labs</mark></td></tr></tbody></table>

***

### Sample Exams

* [Sample Mid](https://emailwsu-my.sharepoint.com/:f:/g/personal/monowar_hasan_wsu_edu/EmqPaqW9lOJNpK5UdHTFt8sBJckg9ciK_UjH6HGJTTgnLw?e=f6vZ0U)
* [Sample Final](https://emailwsu-my.sharepoint.com/:f:/g/personal/monowar_hasan_wsu_edu/EuVDJpyYMMVPi-xXwd40uzkBqlAgwAeeKzZ0ZDwY8a9f0w?e=4IcGYH)

***

### Programming Assignments <a href="#resources" id="resources"></a>

We will have five programming assignments in this course. The assignments must be completed individually.&#x20;

* **PA 0:** *C skill rehash: Design a Unix filesystem tree simulator using C Tree data structures*
* **PA 1:** *Simulating a cache memory system*
* **PA 2:** *Implement various CPU schedulers (first-come-first-serve, round-robin, shortest-job-first)*
* **PA 3:** *Basic kernel-level programming on Linux*
* **PA 4:** *Develop a web proxy that interacts with the browser and the Internet*

We strongly recommend using a Linux machine (or VM) to complete the labs, as we will use a Linux environment to grade your submissions. Some labs (e.g., PA 3) will not work without a Linux environment. Check the following links for details about setting up virtual machines on your systems.&#x20;

* [Windows, Intel-based Mac, and Linux](https://ubuntu.com/tutorials/how-to-run-ubuntu-desktop-on-a-virtual-machine-using-virtualbox#1-overview)
* Apple Silicon Mac ([from scratch](https://docs.getutm.app/guides/ubuntu/), [prebuild-images](https://docs.getutm.app/guides/ubuntu/))

**Note:** for Windows systems, [WSL](https://learn.microsoft.com/en-us/windows/wsl/install) is **not recommended**. You must install a standalone VM image.&#x20;

### Programming Assignment Submission <a href="#pa" id="pa"></a>

We will use [GitHub Classroom](https://classroom.github.com) to deliver programming assignments. This way, you can better manage your assignments using a widely-used version control system, [Git](https://git-scm.com).&#x20;

For information on version control and how to use Git, see:

1. [Eddie Kohler’s Git notes](https://cs61.seas.harvard.edu/site/ref/git/#gsc.tab=0)
2. [Git handbook from GitHub](https://guides.github.com/introduction/git-handbook/)

To learn more about GitHub workflow, see [GitHub Quickstart](https://docs.github.com/en/get-started/quickstart).

**Are you using GitHub on your machine for the first time?**\
If you are using GitHub for the first time on your development machine, you need to authenticate your account — one way to do this is by using [GitHub CLI](https://github.com/cli/cli). Install GitHub CLI using the instructions given [here](https://github.com/cli/cli#installation). Then run the following command and follow the prompts to authenticate your system: `gh auth login`.

#### Submission Workflow <a href="#resources" id="resources"></a>

1. For each lab, you will find a GitHub Classroom link on Canvas. Once you click the link and log into your GitHub account, find your name in the student list and click it to accept the assignment. Please double-check your name and email address before accepting the assignment. *If you accidentally choose another student's name, please contact the instructor.*
2. A repo named `wsu-cpts360-term/paX-name` will be automatically created for you and hosted on GitHub with the starter code.
3. You can then "clone" your repository onto your development machine. You will complete assignments on your development computer and then "push" your work to the GitHub-hosted remote repository for us to grade.
4. **Final submission:**&#x20;
   * Copy the URL of your GitHub repository on the corresponding assignment section on Canvas.&#x20;

If you have any questions about setting up GitHub, please contact the TA.

***

### Useful Resources <a href="#resources" id="resources"></a>

* [Unix and Linux Tutorial](https://heather.cs.ucdavis.edu/~matloff/unix.html)
* [C declarations](https://cdecl.org)
* [Essential C](http://cslibrary.stanford.edu/101/EssentialC.pdf), By [Nick Parlante](https://cs.stanford.edu/people/nick/)
* [GNU C Reference Guide](https://www.gnu.org/software/gnu-c-manual/gnu-c-manual.html)
* [Interactive C Tutorial with Exercises](https://www.learn-c.org)
* GDB [Tutorial 1](https://github.com/mnwrhsn/gdb-tutorial/blob/main/gdbTutorial.pdf), [Tutorial 2](http://beej.us/guide/bggdb/)
* [Git Book](https://git-scm.com/book)
* [Linux Kernel Documentation](https://www.kernel.org/doc/html/latest/index.html)
* GitHub Classroom: [Tutorial 1](https://www.youtube.com/watch?v=ObaFRGp_Eko), [Tutorial 2](https://www.youtube.com/watch?v=8gbKzNlWNAk)

***

#### <mark style="color:blue;">Got stuck? Questions about anything? Feel free to contact the instructor on Teams (preferred) or via email: <monowar.hasan@wsu.edu>!</mark>
