-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
435 lines (435 loc) · 24.5 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<title>CSE 113: Parallel and Concurrent Programming</title>
<style type="text/css">
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
span.underline{text-decoration: underline;}
div.column{display: inline-block; vertical-align: top; width: 50%;}
</style>
<link rel="stylesheet" href="styling.css" />
</head>
<body>
<h1 id="cse-113-parallel-and-concurrent-programming">CSE 113: Parallel and Concurrent Programming</h1>
<p>University of California, Santa Cruz, Fall 2024</p>
<hr />
<h3 id="overview-schedule-description-teaching-team-assessment">| <a href="#overview">Overview</a> | <a href="#schedule">Schedule</a> | <a href="#description">Description</a> | <a href="#teaching-team">Teaching Team</a> | <a href="#assessment">Assessment</a> |</h3>
<!--
Command:
pandoc --css=styling.css -s -f markdown+smart --metadata pagetitle="CSE 113: Parallel and Concurrent Programming" --to=html5 index.md -o index.html
-->
<figure>
<img src="images/running_slugs.jpg" title="Slugs running in parallel" alt="Slugs running in parallel! (This image was generated by OpenAI ChatGPT.)" /><figcaption>Slugs running in parallel! (This image was generated by OpenAI ChatGPT.)</figcaption>
</figure>
<hr />
<h1 id="overview">Overview</h1>
<h2 id="welcome">Welcome</h2>
<p>CSE113: Parallel and Concurrent Programming<br />
UCSC CSE<br />
Fall 2024</p>
<p>Instructor:<br />
<a href="https://mohsenlesani.github.io/">Mohsen Lesani</a> <<a href="mailto:mlesani@ucsc.edu" class="email">mlesani@ucsc.edu</a>><br />
Time:<br />
Tuesdays Thursdays 1:30pm - 3:05pm<br />
Location:<br />
Steven Acad 150<br />
TAs:<br />
Jessica Dagostini <<a href="mailto:jessica.dagostini@ucsc.edu" class="email">jessica.dagostini@ucsc.edu</a>><br />
Gurpreet Dhillon <<a href="mailto:gdhillo6@ucsc.edu" class="email">gdhillo6@ucsc.edu</a>><br />
Tutors:<br />
Ananthajit Srikanth <<a href="mailto:ants@ucsc.edu" class="email">ants@ucsc.edu</a>><br />
Jacob Dickerman <<a href="mailto:jwdicker@ucsc.edu" class="email">jwdicker@ucsc.edu</a>><br />
Ashley Lee <<a href="mailto:allilee@ucsc.edu" class="email">allilee@ucsc.edu</a>></p>
<p>Hello and welcome to the parallel and concurrent programming class! In this class, you will learn the fundamentals of parallel programming concepts, including parallel programming models, reasoning about concurrency, and implementing synchronization idioms. Over the last decade, systems have become more and more parallel, from our phones to supercomputers. Now, nearly every modern device now contains many compute units (e.g., CPUs). These different compute units can work together to solve problems more efficiently than individual cores; however, they must be programmed carefully, both in terms of performance and safety. We will learn how to approach parallel programming, from high-level reasoning to concrete implementations.</p>
<p>This class is scheduled to be in person. We will follow the university guidelines and adapt if necessary. We will do our best to accommodate temporary remote attendance if needed (e.g., if you get sick); however, you are expected to make an effort to attend in-person classes. If your situation requires asynchronous courses, we suggest you contact an undergraduate adviser to discuss alternative options.</p>
<h2 id="websites-and-forums">Websites and Forums</h2>
<ul>
<li><p>Github.io<br />
<a href="https://mohsenlesani.github.io/slugcse113/" class="uri">https://mohsenlesani.github.io/slugcse113/</a><br />
<em>Non-protected materials</em> will be hosted on this website. This includes the schedule, lecture slides, and references, etc.</p></li>
<li><p>Canvas<br />
<a href="https://canvas.ucsc.edu/courses/75704" class="uri">https://canvas.ucsc.edu/courses/75704</a><br />
<em>Protected materials</em> will be hosted on a Canvas website that you will need your university credentials to access. These materials include homeworks, zoom links, lecture recordings, tests, grades, etc.</p></li>
<li><p>Piazza<br />
<a href="https://piazza.com/class/m1l3ef1im6q1so" class="uri">https://piazza.com/class/m1l3ef1im6q1so</a><br />
<em>A Class forum</em> will be provided in Piazza. If you organize other forums outside of the class Piazza (e.g. discord), you must adhere to academic integrity and be kind and respectful.</p></li>
</ul>
<h2 id="acknowledgements">Acknowledgements</h2>
<p>The material for this course is adopted from Professor <a href="https://users.soe.ucsc.edu/~tsorensen/">Tyler Sorensen</a>.</p>
<hr />
<h1 id="schedule">Schedule</h1>
<p>The schedule may adapt to our pace. The slides for each lecture are uploaded before the lecture.</p>
<p>The example code snippets from the lectures are available at this <a href="https://github.com/MohsenLesani/CSE113_Lecture_Code">Code Repo</a>.</p>
<h2 id="module-1-introduction-background-and-ilp">Module 1: Introduction, Background and ILP</h2>
<table>
<thead>
<tr class="header">
<th>Date</th>
<th>Topic</th>
<th>Slides</th>
<th>Readings</th>
<th>Event</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>Sep 26</td>
<td>Welcome!</td>
<td><a href="lectures/1.M1.1.pdf">slides</a></td>
<td></td>
<td></td>
</tr>
<tr class="even">
<td>Oct 1</td>
<td>Instruction Level Parallelism</td>
<td><a href="lectures/2.M1.2.pdf">slides</a></td>
<td>Appendix B & Class slides</td>
<td></td>
</tr>
<tr class="odd">
<td>Oct 3 </td>
<td>C++ threads and caches</td>
<td><a href="lectures/3.M1.3.pdf">slides</a></td>
<td>Class Slides</td>
<td>HW#1 Release</td>
</tr>
</tbody>
</table>
<h2 id="module-2-mutual-exclusion">Module 2: Mutual Exclusion</h2>
<table>
<thead>
<tr class="header">
<th>Date</th>
<th>Topic</th>
<th>Slides</th>
<th>Readings</th>
<th>Event</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>Oct 8 </td>
<td>Principles of Mutual Exclusion</td>
<td><a href="lectures/4.M2.1.pdf">slides</a></td>
<td>Chapter 2</td>
<td></td>
</tr>
<tr class="even">
<td>Oct 10</td>
<td>Mutual Exclusion in Practice</td>
<td><a href="lectures/5.M2.2.pdf">slides</a></td>
<td>Chapter 2</td>
<td>HW#2 Release</td>
</tr>
<tr class="odd">
<td>Oct 15</td>
<td>Specialized Mutual Exclusion</td>
<td><a href="lectures/6.M2.3.pdf">slides</a></td>
<td>Chapter 7.5 - end</td>
<td>HW#1 Deadline</td>
</tr>
<tr class="even">
<td>Oct 17</td>
<td>Mutex Wrapup</td>
<td><a href="lectures/7.M2.4.pdf">slides</a></td>
<td>Chapter 8</td>
<td></td>
</tr>
</tbody>
</table>
<h2 id="module-3-concurrent-data-structures">Module 3: Concurrent Data Structures</h2>
<table>
<colgroup>
<col style="width: 12%" />
<col style="width: 34%" />
<col style="width: 8%" />
<col style="width: 22%" />
<col style="width: 22%" />
</colgroup>
<thead>
<tr class="header">
<th>Date</th>
<th>Topic</th>
<th>Slides</th>
<th>Readings</th>
<th>Event</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>Oct 22</td>
<td></td>
<td></td>
<td></td>
<td>Midterm</td>
</tr>
<tr class="even">
<td>Oct 24</td>
<td>Principles of Concurrent Objects</td>
<td><a href="lectures/8.M3.1.pdf">slides</a></td>
<td>Chapter 3</td>
<td>HW#2 Deadline, HW#3 Release</td>
</tr>
<tr class="odd">
<td>Oct 29</td>
<td>Specialized Concurrent Queues</td>
<td><a href="lectures/9.M3.2.pdf">slides</a></td>
<td>Class slides</td>
<td></td>
</tr>
<tr class="even">
<td>Oct 31</td>
<td>Midterm Review / Guest Lectures</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr class="odd">
<td>Nov 3</td>
<td>Work Stealing</td>
<td><a href="lectures/10.M3.3.pdf">slides</a></td>
<td>Chapter 10 + class slides</td>
<td></td>
</tr>
</tbody>
</table>
<h2 id="module-4-gpu-computing">Module 4: GPU Computing</h2>
<table>
<colgroup>
<col style="width: 13%" />
<col style="width: 34%" />
<col style="width: 8%" />
<col style="width: 21%" />
<col style="width: 21%" />
</colgroup>
<thead>
<tr class="header">
<th>Date</th>
<th>Topic</th>
<th>Slides</th>
<th>Readings</th>
<th>Event</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>Nov 7</td>
<td>Intro to GPUs and GPU programming</td>
<td><a href="lectures/11.M4.1.pdf">slides</a></td>
<td>CUDA By Example Chapter 1</td>
<td>HW#3 Deadline, HW#4 Release</td>
</tr>
<tr class="even">
<td>Nov 12</td>
<td>Javascript Parallelism</td>
<td><a href="lectures/12.M4.2.pdf">slides</a></td>
<td>Class Slides</td>
<td></td>
</tr>
<tr class="odd">
<td>Nov 14</td>
<td>Web GPU programming, (start memory models?)</td>
<td><a href="lectures/13.M4.3.pdf">slides</a></td>
<td>Class Slides</td>
<td></td>
</tr>
</tbody>
</table>
<h2 id="module-5-advanced-topics">Module 5: Advanced topics</h2>
<table style="width:100%;">
<colgroup>
<col style="width: 14%" />
<col style="width: 38%" />
<col style="width: 9%" />
<col style="width: 24%" />
<col style="width: 12%" />
</colgroup>
<thead>
<tr class="header">
<th>Date</th>
<th>Topic</th>
<th>Slides</th>
<th>Readings</th>
<th>Event</th>
</tr>
</thead>
<tbody>
<tr class="odd">
<td>Nov 19</td>
<td>Memory Consistency Models</td>
<td><a href="lectures/14.M5.1.pdf">slides</a></td>
<td><a href="https://queue.acm.org/detail.cfm?id=2088916">You Don’t Know Jack …</a></td>
<td>HW#4 Deadline</td>
</tr>
<tr class="even">
<td>Nov 21</td>
<td>General concurrent sets</td>
<td><a href="lectures/15.M5.2.pdf">slides</a></td>
<td>Chapter 9 + Class Slides</td>
<td>HW#5 Release</td>
</tr>
<tr class="odd">
<td>Nov 26</td>
<td>General concurrent sets / Barriers</td>
<td><a href="lectures/16.M5.3.pdf">slides</a></td>
<td>Chapter 17</td>
<td></td>
</tr>
<tr class="even">
<td>Nov 28</td>
<td></td>
<td></td>
<td></td>
<td>Holiday</td>
</tr>
<tr class="odd">
<td>Dec 3</td>
<td>Barriers / Processes</td>
<td><a href="lectures/17.M5.4.pdf">slides</a></td>
<td>Class Slides</td>
<td></td>
</tr>
<tr class="even">
<td>Dec 5 </td>
<td>Practice session / Research lecture</td>
<td><a href="lectures/18.M5.5.pdf">slides</a> <a href="lectures/Qs.md">Qs</a></td>
<td>Class Slides</td>
<td>HW#5 Deadline</td>
</tr>
<tr class="odd">
<td>Dec 12, 12-3pm, lecture class</td>
<td></td>
<td></td>
<td></td>
<td>Final exam</td>
</tr>
</tbody>
</table>
<hr />
<h1 id="description">Description</h1>
<h2 id="summary">Summary</h2>
<p>Welcome to CSE 113: Parallel and Concurrent Programming! In this class, we will explore many aspects of parallel computing, from instruction-level parallelism in seemingly sequential programs to thread-level parallel programs that can efficiently execute across the many cores of today’s multiprocessors and accelerators (e.g., GPUs). We will learn how to write programs that execute efficiently and correctly in concurrent environments. This class will give you the necessary foundation to solve problems in parallel: a powerful skillset considering that today’s computers are increasingly parallel.</p>
<h2 id="modules">Modules</h2>
<p>This class will be split into 5 modules, each of which are roughly two weeks:</p>
<ul>
<li><p><strong>Module 1: Introduction, Background and ILP</strong><br />
This module will introduce the course and provide a programming, compiler, and architectural refresher. We will discuss how modern hardware exploits parallelism within a sequential thread, known as instruction-level parallelism (ILP), and how to write parallel code in C++.</p></li>
<li><p><strong>Module 2: Mutual Exclusion</strong><br />
This module will discuss the fundamental problem of mutual exclusion. We will discuss the theory behind mutual exclusion, how it is implemented in practice, and further, specialized mutual exclusion implementations.</p></li>
<li><p><strong>Module 3: Concurrent Data Structures</strong><br />
This module will discuss concurrent objects, and how to reason about them. We will discuss several implementations, and show how they can be used in load balancing and software pipelining.</p></li>
<li><p><strong>Module 4: Parallel Programming on GPGPUs</strong><br />
This module will discuss general purpose (GP) GPU programming. We will discuss the single-instruction multiple-threads (SIMT) programming model, hierarchical execution, and different architectural considerations when optimizing programs.</p></li>
<li><p><strong>Module 5: Advanced topics</strong><br />
This module will discuss advanced topics, including memory consistency and fairness.</p></li>
</ul>
<h2 id="references">References</h2>
<p>We cover the required material in the class and provide the slides. We do not require a physical textbook for this class; however, we list the following that we will use. Each are available online from the UCSC library.</p>
<ul>
<li><a href="https://ucsc.primo.exlibrisgroup.com/permalink/01CDL_SCR_INST/h824t0/WorldCat1376835717">The Art of Multiprocessor Programming</a>.<br />
This book has a nice collection of concurrent data structures.</li>
<li><a href="https://ucsc.primo.exlibrisgroup.com/permalink/01CDL_SCR_INST/15r5l0d/alma9914804950506531">Computer Architecture: A Quantitative Approach</a><br />
For those of you who have not taken CSE 120, you may find this helpful. Chapter 2 deals with the memory hierarchy and Chapter 3 deals with hardware for instruction level parallelism.</li>
<li><a href="https://edoras.sdsu.edu/~mthomas/docs/cuda/cuda_by_example.book.pdf">CUDA by Example</a><br />
We recommend this book for more information on GPU computing.</li>
</ul>
<h2 id="required-background">Required Background</h2>
<p>The prerequisites for this class are CSE 12 (systems), CSE 101 (data-structures and algorithms), and recommended CSE 120 (architecture). You will need some foundation in all of those topics to succeed in this class. For example: you will need to know data-structures and algorithms, as we will extend some of these sequential concepts to their natural parallel counterparts. You will need some systems background, as we will discussing many aspects of the hardware/software interface. Parallel programming is most efficiently executed on parallel hardware; thus, it is helpful to understand shared hardware resources (e.g. the memory hierarchy) of the underlying architectures.</p>
<p>Because this is an upper division class, we expect a general CS foundation. For the homeworks, I will assume that you are:</p>
<ul>
<li>comfortable using a linux command-line</li>
<li>programming in a high-level language (e.g. Python)</li>
<li>programming in a low-level language (e.g. C)</li>
<li>a high-level understanding of computer architecture</li>
<li>a basic ability to use Github</li>
<li>a basic ability to use Docker</li>
</ul>
<h2 id="attendancequiz">Attendance/Quiz</h2>
<p>Live discussions and synchronous class attendance are a valuable part of the learning experience. I expect you to make an effort to synchronously attend this class, whether on Zoom on in-person. I plan to upload recordings of the class to canvas, but this is not a substitute for attendance.</p>
<p>Attendance will be graded using a small quiz given at the end of the class. Please do not submit the quiz unless you either attended or watched the lecture.</p>
<p><em>If synchronous attendance drops significantly then I will stop recording lectures and make attendance a part of the grade.</em></p>
<h2 id="accessibility">Accessibility</h2>
<p>UC Santa Cruz is committed to creating an academic environment that supports its diverse student body. If you are a student with a disability who requires accommodations to achieve equal access in this course, please submit your Accommodation Authorization Letter from the Disability Resource Center (DRC) to me by email, preferably within the first two weeks of the quarter. I would also like us to discuss ways we can ensure your full participation in the course. I encourage all students who may benefit from learning more about DRC services to contact DRC by phone at 831-459-2089 or by email at drc@ucsc.edu.</p>
<h2 id="privacy">Privacy</h2>
<p>I plan to record lectures in class. Please be aware that:</p>
<ul>
<li>Things you say or do will be recorded. I doubt that this will be an issue, but if you want me to remove any part of the recording, please just let me know.</li>
<li>Many forums (e.g. zoom chats, Piazza posts, etc.) chats are not private. Please be respectful and kind, and assume everyone can see what you are typing.</li>
</ul>
<hr />
<h1 id="teaching-team">Teaching Team</h1>
<p>We have a great teaching staff this quarter! All of them are passionate about parallel programming. Please get to know them and take advantage of the office hours and mentoring sessions they provide.</p>
<h2 id="office-hours">Office Hours:</h2>
<h3 id="ta">TA</h3>
<p> Jessica Dagostini<br />
<<a href="mailto:jessica.dagostini@ucsc.edu" class="email">jessica.dagostini@ucsc.edu</a>><br />
Tuesdays: 10:00am - 11:00am remotely<br />
Thursdays: 11:00am - 12:00pm @ BE-153A, hybrid<br />
<a href="https://calendar.app.google/D8uMjPANd5NS9kUd7">https://calendar.app.google/D8uMjPANd5NS9kUd7</a><br />
The opening slots will be visible just one day before the day of the OH.<br />
Each slot has 15 min each.</p>
<h3 id="ta-1">TA</h3>
<p> Gurpreet Dhillon<br />
<<a href="mailto:gdhillo6@ucsc.edu" class="email">gdhillo6@ucsc.edu</a>><br />
Wednesdays: 12:00pm - 1:00pm remotely<br />
Fridays: 12:30pm - 1:30pm @ BE-312B, in-person<br />
<a href="https://docs.google.com/spreadsheets/d/1D_Z7ABTYHt5sTkUaRpSM7-748l-P8LA-hbYdGugKk-I/edit?usp=sharing">Google Doc</a><br />
This spreadsheet is a sign-up sheet for Wednesday.</p>
<h3 id="tutor">Tutor</h3>
<p> Ananthajit Srikanth <<a href="mailto:asrikan1@ucsc.edu" class="email">asrikan1@ucsc.edu</a>><br />
Mondays/Wednesdays: 5:30pm - 6:30pm @ Jack’s lounge, in-person</p>
<h3 id="tutor-1">Tutor</h3>
<p> Jacob Dickerman <<a href="mailto:jwdicker@ucsc.edu" class="email">jwdicker@ucsc.edu</a>><br />
Mondays: 1:30pm - 2:30pm @ S&E library, hybrid<br />
Wednesdays: 10:00am - 11:00am remotely</p>
<h3 id="tutor-2">Tutor</h3>
<p> Ashley Lee <<a href="mailto:allilee@ucsc.edu" class="email">allilee@ucsc.edu</a>><br />
Mondays: 11:00am - 12:30pm @ Jack’s Lounge, in-person<br />
Tuesdays: 12:00pm - 1:30pm remotely</p>
<h3 id="instructor">Instructor</h3>
<p> <a href="https://mohsenlesani.github.io/">Mohsen Lesani</a><br />
<<a href="mailto:mlesani@ucsc.edu" class="email">mlesani@ucsc.edu</a>><br />
Thursdays 3:10pm - 5:10pm. Office: E2 331<br />
My office hours can be remote or in-person.<br />
My physical office is E2-331.<br />
I announced a Zoom link and its passcode on canvas.</p>
<h2 id="asynchronous-communication">Asynchronous Communication</h2>
<p>For any questions outside of office hours: Please post to the class Piazza.</p>
<p>Link for Piazza is <a href="https://piazza.com/class/m1l3ef1im6q1so" class="uri">https://piazza.com/class/m1l3ef1im6q1so</a>.</p>
<p>If your question is more general, make it visible to the rest of class. If it isn’t clear if it is a sensitive question or not, please start out by making the question to the teaching staff and we can advise on making it public or not. Feel free to answer questions that your classmates post or freely participate in discussions there.</p>
<p>If it is a sensitive topic, you can post only to the teaching staff. Please do not message me directly unless it is an emergency. Please do not email us individually. Those emails get buried, or they might not be seen by the right member of the teaching staff. This especially applies to grading questions; if you have questions about your grade do <em>not</em> email a grader directly. Write a private post on Piazza to the teaching staff. Typically grades are a collaborative effort between several TAs, and it helps if we can all see the issue.</p>
<p>We will strive to reply to homework questions and discussions within 24 hours. Please do not plan on, or expect help, outside of regular business hours (after 5 pm, weekends, or holidays)</p>
<hr />
<h1 id="assessment">Assessment</h1>
<h2 id="grade-breakdown">Grade Breakdown</h2>
<ul>
<li>Attendance/Quiz: 10%</li>
<li>Homeworks: 50% (10% each)</li>
<li>Midterm Exam: 10%</li>
<li>Final Exam: 30%</li>
</ul>
<p>If you want to discuss a grade, please contact the teaching staff no later than 1 week after the grades are posted.</p>
<h2 id="attendancequiz-1">Attendance/Quiz</h2>
<p>A small quiz is given at the end of each class. Each quiz has a few multiple-choice or short-answer questions that are designed to make you think about what you have learned in the class, and the questions might be open-ended. Please do not submit the quiz unless you either attended or watched the lecture. You can have up to 3 absences that will not affect your grade.</p>
<h2 id="homework">Homework:</h2>
<p>There will be one assignment per module, for a total of 5 homeworks.</p>
<p>We will use github classroom with automatic feedback for 4 of the assignments. Because this is a relatively new setup, there may be some friction getting started. We appreciate your patience and understanding. I will update the class as we make progress.</p>
<p>We will provide a docker for you to develop in. We plan to enable a git-based workflow where you push your current solution to a repo, and receive feedback from a server. You will be graded on the server feedback rather than the results from your own machine. This is to help provide a fair and scalable grading across the increasing diverse devices that everyone has these days. Someone with an Apple M-series processor will get very different results than someone with an Intel X86 processor. Architectural differences are very interesting to discuss and I hope we can have detailed discussions about how your machine’s results differ from the server on Piazza.</p>
<p>Homeworks are due at midnight on their due date. (Please do not plan on help after 5 pm.) You will have 10 days for each assignment. You have an additional 3 days to turn homework in late <em>without penalty</em>. After that, late submission will not be accepted. The due date for the last homework may need to be adjusted to account for the end of the quarter.</p>
<h2 id="exams">Exams:</h2>
<p>There will be exams in this course: a midterm and a final. The midterm will be worth as much as a single homework assignment (10%). The final will be worth 30%.</p>
<p>The midterm will be given halfway through the class. The final will be given in the finals week. Dates will be announced in the schedule section.</p>
<p>You will be allowed 3 pages (front and back) of notes in any format (printed, hand-written, colored, etc). Feel free to print slides to use as your notes.</p>
<h2 id="academic-integrity">Academic Integrity</h2>
<p>One of the joys of university life is socializing and working with your classmates. We want you to make friends with each other and discuss the material. <strong>That said, I expect all assignments (code, write-ups, and tests) to be your own original work.</strong> If you work together with a classmate on an assignment, please mention this, e.g. in the comments of your code. If you use a figure you didn’t create in a write-up, then it needs a citation. Please review the <a href="https://guides.library.ucsc.edu/citesources/plagiarism">universities policy on plagiarism</a>. This class has a zero-tolerance policy on cheating. Please don’t do it. We would much rather get a hundred emails asking for help than have to refer anyone for academic misconduct.</p>
<p>As a final note on cheating: the economic condition facing computer science graduates is volatile in the near future. It is crucial that you benefit from your time at the university, and learn the concepts thoroughly. If you cheat, you will not be able to stand out from others who put in the effort when it comes time to find a job. Cheating will have a devastating impact on your own career opportunities. Just don’t do it.</p>
<h2 id="using-ai-tools">Using AI Tools</h2>
<p>We are in an exciting time for AI, especially for tools like Github co-pilot and LLMs (e.g., ChatGPT). These tools have incredible potential and they are improving every day. However, the educational community has not had sufficient time to understand their impact on learning objectives. This class has been designed to be taken <em>without</em> the use of AI tools. They are not allowed to be used in the course. If we suspect abuse, then we may implement random audits of assignments, where you will be asked to explain your implementation in detail.</p>
<p>If you are interested in seeing how these tools can help with parallel programming, please feel free to use them <em>after</em> you have submitted a non-AI version of the homework. We would be very interested in hearing about your experience, e.g., as a piazza post.</p>
<hr />
</body>
</html>