-
Notifications
You must be signed in to change notification settings - Fork 6
Expand file tree
/
Copy pathindex.html
More file actions
executable file
·204 lines (182 loc) · 11.6 KB
/
index.html
File metadata and controls
executable file
·204 lines (182 loc) · 11.6 KB
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
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html">
<title>Overview of CS2014 systems programming</title>
</head>
<body bgcolor="#fffedc">
<h1>Overview of CS2014 systems programming</h1>
<p>This is the 2017/2018 version. Last updated 20180405 by <a href="mailto:[email protected]">[email protected]</a></p>
<ul>
<li>The canonical URL for this stuff is: <a
href="https://down.dsg.cs.tcd.ie/cs2014/">https://down.dsg.cs.tcd.ie/cs2014/</a>
<ul><li>I use github for source control so the latest source will be at
<a href="https://github.com/sftcd/cs2014">https://github.com/sftcd/cs2014</a>. Feel free
to submit a PR if interested.</li>
<li>I <strong>strongly</strong> recommend you clone a copy of that repo. Figuring out how do that is an exercise for
your first lab.</li>
</ul></li>
<li>The <a href="#Lecture">Lecture slides</a> section below has links to ppt
versions of all the lectures for the course. </li>
<li>The <a href="materials/README.html">Materials</a> page has links to local and/or remote copies of
some of the background information/papers etc. For exam purposes, you won't
need all of these, just what's discussed in class, but you may be interested.</li>
<li>The <a href="examples/README.html">Examples directory</a> contains a bunch of
samples we'll use in class.</a>
<li>There will be six <a href="#labs">assignments</a>, totalling 20% of the marks for the module
(so the exam is worth 80%). The deadlines for the assignments are hard deadlines, missing them
means losing significant marks.
<ul>
<li>Turns out you don't have to pass the assignments and exam separately, that is, you don't need to get above 40% in both.</li>
<li>Apologies for the earlier misinformation!</li>
</ul></li>
<li>Note that I may be changing the slides/materials as I go. Depending on stuff
that's more than two weeks ahead of time may be wasted effort:-)</li>
<li>The Teaching Assistant for this course is <a
questions related to assignments/labs. For other questions feel free to send me
.</li>
<li>Plagiarism note: it is enirely ok to talk to other students about the assignments and coding issues, and
you are encouraged to do that and to help one another. It is not ok to copy someone else's code, nor to write
code for someone else. We have tools to check. And if in doubt, we will require students to explain their
submitted code face-to-face. We will randomly select some students/assignments for such checking and request
attendance at labs for that purpose from time to time.</li>
<li>This course was previously taught by <a href="https://www.scss.tcd.ie/David.Gregg/">David Gregg</a>, his
course materials are <a href="https://www.scss.tcd.ie/David.Gregg/cs2014/">here</a>, are still relevant,
and should provide a useful 2nd view to the more-or-less the same material.
<ul>
<li>You can look some of David's old exams from
<a href="https://www.tcd.ie/academicregistry/exams/assets/local/past-papers2016/CS/CS2014-2.PDF">2016</a>
and
<a href="https://www.tcd.ie/academicregistry/exams/assets/local/past-papers2015/CS/CS2014-2.PDF">2015</a>.
</li>
</ul></li>
<li>Sample exam for 2018:
<ul>
<li><a href="cs2014-exam-2018-sample.pdf">Here</a> is the sample exam paper</li>
<li>Solution guidance is <a href="sample-exam/">here</a>.</li>
<li>For the sample exam, and for the real exam, you'll also be given
<a href="c-refcard.pdf">this 'C' language cheat-sheet</a> that you can
use during the exam.</li>
</ul>
</li>
</ul>
<h2>Lecture Slides</h2>
<ol>
<li>General introduction (<a href="lectures/intro.ppt">ppt</a>,<a href="lectures/intro.pdf">pdf</a>)
<ul><li><a href="examples/bm/README.html">Broken Malloc Example</a></li></ul>
</li>
<li>C programming (<a href="lectures/c-programming.ppt">ppt</a>,<a href="lectures/c-programming.pdf">pdf</a>)
<ul><li><a href="examples/c-progs-1/README.html">C Examples#1</a></li></ul>
</li>
<li>Operating Systems (<a href="lectures/os-stuff.ppt">ppt</a>,<a href="lectures/os-stuff.pdf">pdf</a>)
<ul><li><a href="examples/shell/README.html">Shell Example</a></li></ul>
</li>
<li>A bit of crypto code a.k.a. <a href="assignments/assignment2/README.html">assignment#2</a></li>
<li>More C programming
<ul><li><a href="examples/c-progs-2/README.html">C Examples#2</a></li></ul>
</li>
<li>Moar of the old crypto stuff <a href="assignments/assignment3/README.html">assignment#3</a></li>
<li>Debugging:
- (Hoping for a positive response allow permission to use these, in which case...)
Thanks to caltech for permission to use these:
<ul>
<li><a href="http://courses.cms.caltech.edu/cs24/Debugging-1.pdf">Debugging#1</a></li>
<li><a href="http://courses.cms.caltech.edu/cs24/Debugging-2.pdf">Debugging#2</a></li>
</ul>
</li>
<li>Structures(<a href="lectures/structures.ppt">ppt</a>,<a href="lectures/structures.pdf">pdf</a>)
<ul><li><a href="examples/c-progs-3/README.html">C Examples#3</a></li></ul>
</li>
<li>Christian's revision slides (<a href="lectures/christian-slides.pdf">pdf</a>)</li>
<li>Our first real example: <a href="examples/tree/README.html">tree</a>
<ul><li>TGIF <a href="assignments/assignment5/README.html">assignment#5</a></li></ul>
</li>
<li>A few links with good advice and things to know about (esp. if you're after high exam marks):
<ul>
<li>One person's view of <a href="https://matt.sh/howto-c">how to code in C in 2016</a> (a link I got from Lars Eggert - thanks Lars!) </li>
<li>A nice recent <a href="https://pleasestopnamingvulnerabilities.com/">blog post</a> about some bugs/CVEs.</li>
<li>This page has a whole bunch of stuff about <a href="https://wiki.sei.cmu.edu/confluence/display/c/SEI+CERT+C+Coding+Standard">safe programming in C</a>, some of it is outdated but mostly it's good material.</li>
</ul>
</li>
<li>Time to start C++: A nicely terse <a href="http://joule.bu.edu/~hazen/progr/cppcen.html">tutorial</a>,
that seems so good I have a <a href="materials/cppcen.html">local copy</a>
<ul>
<li><a href="examples/c++-1/README.html">Hello World</a></li>
<li><a href="examples/c++-2/README.html">Handling argc/argv</a></li>
<li>Socket Knocking <a href="assignments/assignment6/README.html">assignment#6</a></li>
</ul>
<li>A <a href="lectures/langs.pdf">plethora</a> of programming languages (because systems and systems programming changes!)</li>
<li>Maybe Go is one of the more interesting of those...
<ul>
<li>An <a href="http://esr.ibiblio.org/?p=7724">argument</a> that Go or Rust are more likely successors to C</li>
<li>CVEs as an modest indicator of relative maturity:
<ul>
<li><a href="https://www.cvedetails.com/vendor/14185/Golang.html">Golang CVEs</a></li>
<li><a href="https://www.cvedetails.com/vendor/74/PHP.html">PHP CVEs</a></li>
</ul>
</li>
<li>It'd be nothing if there wasn't a <a href="https://en.wikipedia.org/wiki/Go_(programming_language)">Wikipedia</a> page:-)</li>
<li>A tour of <a href="https://tour.golang.org/list/">Go</a></li>
<li>A nice but long <a href="https://go-talks.appspot.com/github.com/davecheney/introduction-to-go/introduction-to-go.slide#1">introduction</a> that you can look at later</li>
<li>Another <a href="https://github.com/miku/hellogolang">introduction</a> to Go</li>
<li>A Go <a href="https://golangbot.com/learn-golang-series/">tutorial</a></li>
<li>The <a href="https://play.golang.org/">Go playground</a> where you can run code in your browser</li>
<li>...and what else did you expect? Here's <a href="assignments/assignment7-8/README.html">assignment7/8</a></li>
</ul>
</li>
<li>Wrapping up: writing maintainable and better code
<ul>
<li>Wilson G, Aruliah DA, Brown CT, Chue Hong NP, Davis M, et
al. (2014) Best Practices for Scientific Computing. PLoS Biol 12(1): e1001745.
doi:10.1371/journal.pbio.1001745
(<a href="materials/journal.pbio.1001745">local pdf</a>,
<a href="http://journals.plos.org/plosbiology/article/file?id=10.1371/journal.pbio.1001745">plos URL</a>) </li>
<li>Some <a href="https://pl.cs.jhu.edu/oose/lectures/design-principles.shtml">Design principles</a> </li>
<li>Some cautious considerations related to <a href="https://www.embedded.com/design/prototyping-and-development/4008303/A-guide-to-C--for-the-cautious-embedded-programmer">embedded systems</a>(<a href="materials/goodembeddedcode.html">local copy</a>)</li>
</ul>
</il>
<li>A few things to take a peek at yourself, if interested...(these aren't needed for exams)
<ul>
<li>A bit of timely <a href="https://www.blackhat.com/docs/eu-17/materials/eu-17-Arnaboldi-Exposing-Hidden-Exploitable-Behaviors-In-Programming-Languages-Using-Differential-Fuzzing-wp.pdf">fuzzing</a> and the related
<a href="https://github.com/IOActive/XDiFF">code</a></li>
<li><a href="https://en.wikipedia.org/wiki/Return-oriented_programming">Return Oriented Programming (ROP)</a> is an attack technique that shows you how bad actors/researchers could abuse your code.</li>
<li>And of course we couldn't not mention the <a href="https://ioccc.org/">IOCCC</a></li>
<li>Lastly, another reminder that being able to program puts you in a privileged position that allows you to defend your and other's <a href="https://en.wikipedia.org/wiki/Digital_rights">rights</a></li>
</ul>
</ol>
<h2><a neme="labs">Labs and Assignments</a></h2>
<p>Labs will be in LG12, on Thursdays from noon-4pm. Some subset of the teaching assistant,
myself and
the two demonstrators will be in LG12 during that period, so please do come along if
you need help or have questions about the lectures or assignments.
As the room isn't
big enough, when attending labs, please adhere to the
following groupings:</p>
<ul>
<li>Group 1: 12.00-12.50: Students whose surname begins with a letter between "P" and "Z".</li>
<li>Group 2: 13.00-13.50: Students whose surname begins with a letter between "K" and "O"</li>
<li>Group 3: 14.00-14.50: Students whose surname begins with a letter between "D" and "J"</li>
<li>Group 4: 15.00-15.50: Students whose surname has a prefix between "A" and "C" </li>
</ul>
<p>We strongly encourage you to get to the first lab, to ensure you
have sorted out logins etc. and are basically familiar with the tools.
If you don't, you will likely regret that. (There is no assignment
for the first lab.) After that, you can do the assignments by yourself
or in the labs as you choose.</p>
<p>Submission of assignments will be via the TBD system.</p>
<p>Details of the <a href="./assignments/README.html">assignments</a> will be published as we get to them, at
which point links will appear below. General instructions <a href="assignments/README.html">here</a>.</p>
<ol>
<li><a href="https://down.dsg.cs.tcd.ie/cs2014/assignments/assignment0/README.html">Assignment0</a>: no deadline</li>
<li><a href="https://down.dsg.cs.tcd.ie/cs2014/assignments/assignment1/README.html">Assignment1</a>: deadline 2017-10-09</li>
<li><a href="https://down.dsg.cs.tcd.ie/cs2014/assignments/assignment2/README.html">Assignment2</a>: deadline 2017-10-16</li>
<li><a href="https://down.dsg.cs.tcd.ie/cs2014/assignments/assignment3/README.html">Assignment3</a>: deadline 2017-10-30</li>
<li>Assignment4: ignore this</li>
<li><a href="https://down.dsg.cs.tcd.ie/cs2014/assignments/assignment5/README.html">Assignment5</a>: deadline 2017-11-27</li>
<li><a href="https://down.dsg.cs.tcd.ie/cs2014/assignments/assignment6/README.html">Assignment6</a>: deadline 2017-12-05</li>
<li><a href="https://down.dsg.cs.tcd.ie/cs2014/assignments/assignment7-8/README.html">Assignment7/8</a>: deadline 2017-12-15</li>
</ol>
</body>
</html>