-
Notifications
You must be signed in to change notification settings - Fork 487
/
Copy pathsyllabus.html
358 lines (358 loc) · 19.8 KB
/
syllabus.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
<!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>CS 2150: Program and Data Representation: Course Syllabus</title>
<style>
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%;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
</style>
<link rel="stylesheet" href="../markdown.css" />
<!--[if lt IE 9]>
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
<![endif]-->
</head>
<body>
<h1 id="cs-2150-program-and-data-representation-course-syllabus">CS
2150: Program and Data Representation: Course Syllabus</h1>
<p><a href="index.html">Go up to the CS 2150 page</a> (<a
href="index.md">md</a>)</p>
<h3 id="fall-2022">Fall 2022</h3>
<h3 id="instructors">Instructors</h3>
<!-- - [Mark Floryan][31] / [[email protected]](mailto:[email protected]). Office: Rice Hall, room 203. Office hours are Tue 11-12:30pm, Wed. 10-11:30am **On Zoom (room id: markfloryan)**. -->
<ul>
<li><a href="http://www.cs.virginia.edu/~asb">Aaron Bloomfield</a> / <a
href="mailto:[email protected]">[email protected]</a>. Office: Rice
Hall, room 402. Office hours are Wed 10-noon and by appointment.</li>
</ul>
<h3 id="course-info">Course Info</h3>
<ul>
<li>Lectures: M/W/F 1:00-1:50 in Olsson 018</li>
<li>Email: none; fill out a support request (not yet ready) instead</li>
<li>Office hours: schedule to be announced. Any concerns that are not
appropriate to be addressed then should be submitted via a support
request (not yet ready).</li>
<li>Announcement feed: <a
href="http://twitter.com/UVaCS2150">@UVaCS2150</a> and the <a
href="daily-announcements.html#/">daily announcements slide set</a>; you
are responsible for checking both</li>
<li>TA office hours are evenings on Sundays, Mondays, Wednesdays, and
Thursdays; see the Collab landing page for details</li>
<li>Laboratory Meetings: on Tuesdays</li>
</ul>
<p><strong>Course Description:</strong> This course will introduce you
to program and data representation from high level concepts to machine
level implementation. Data structuring techniques and the representation
of data structures during program execution are discussed, as are
operations and control structures and their representation during
program execution. Representations of numbers, arithmetic operations,
arrays, records, recursion, hashing, stacks, queues, trees, graphs, and
related concepts are also covered.</p>
<p><strong>Availability:</strong> It is important to me to be available
to my students, and to address your concerns. If your concern can’t be
addressed during the lecture periods or via a support request (not yet
ready), then please fill out a support request (not yet ready) to find a
time to (virtually) meet. But with 500 students in the class, and only
one instructor, I will not be able to manage everybody emailing their
concerns – hence the use of the support request (not yet ready)
system.</p>
<p>If you have any comments on the course - what is working, what is not
working, what can be done better, etc. - I are very interested in
hearing about them. There is an <a
href="https://collab.its.virginia.edu/x/JunIx3">anonymous feedback tool
through Collab</a> that you can use, or e-mail.</p>
<p><strong>Prerequisites:</strong> Both of:</p>
<ul>
<li>CS 2110 (Software Development Methods) or CS 2220 (Engineering
Software) with a grade of C- or higher
<ul>
<li>This is a strict pre-req, and no exceptions are ever allowed for not
having taken that course</li>
</ul></li>
<li>CS 2102 (Discrete Math) or CS 2120 (Discrete Mathematics and Theory
1) with a grade of C- or higher
<ul>
<li>CS 2120 can be taken as a co-req; see details about this in the <a
href="course-introduction.html#/">first slide set</a> (specifically, <a
href="course-introduction.html#/cs2102">here</a>).</li>
</ul></li>
</ul>
<p><strong>Course Objectives:</strong> Students who complete the course
will:</p>
<ul>
<li>Understand program representation from the high-level programming
language perspective down to the underlying machine level
representation, including: number representation, operations,
conditionals, and control structures</li>
<li>Be able to implement basic and advanced abstract data types in C++
including: linked lists, stacks, queues, hash tables, trees, and
graphs</li>
<li>Be able to evaluate asymptotic time and space complexity analysis of
programs and data structure implementations using Big-O, Big-Omega, and
Big-Theta notation and assess the suitability of a data structure for a
particular problem</li>
<li>Understand the basic program execution model and the underlying
computer hardware and software (fetch-execute cycle, memory hierarchy,
operating system, compiler)</li>
<li>Be able to implement basic program control and data structures in an
assembly language (loops, conditionals, subroutines and parameter
passing modes, arrays)</li>
</ul>
<p><strong>Grades:</strong> Grades will be calculated by the following
formula:</p>
<ul>
<li>45%: Laboratories</li>
<li>30%: Two midterm exams</li>
<li>25%: Final exam</li>
</ul>
<p>The course grades are <strong><em>LIKELY</em></strong> to follow the
standard decade curve: 90 and above is an A of some sort (A-, A, or A+),
80 and above is some sort of a B, etc. This is not a guarantee, as the
final determination of the course grades is goign to depend on how the
grading works out.</p>
<p><strong>Class recordings:</strong> Class sessions for this course
will be recorded. Recordings will be available only to the instructor(s)
and students enrolled in the class, including those who cannot attend
the live sessions. Recordings will be deleted when no longer necessary.
Recordings may not be reproduced, shared with those not enrolled in the
class, or uploaded to other online environments. Students who are not
comfortable with participating in a recorded discussion session should
contact the instructor to request an alternate assessment activity.
Students in a class are prohibited from recording of any kind unless
authorization is obtained from the instructor.</p>
<p><strong>Learning the material:</strong> We provide a number of ways
for you to learn the material. You do not need to utilize all of them –
and, quite frankly, we don’t expect you to use all of them, as that
would take up way too much time. You should figure out what works best
for you, and then utilize those.</p>
<ul>
<li>Lecture recordings: via the “Lecture capture” tool on Collab, these
are pre-recorded lectures that go through the slides one by one. They
don’t show the board when diagrams are being written, though. For
reasons explained in the first lecture, they have to all be recorded
when classes start, so we are using a set from a previous semester.</li>
<li>Reading through the slides on your own: this will be the quickest,
and likely will not teach you the material nearly as well. Keep in mind
that you still need to know the material, so if you skip all the live or
recorded video sessions, and just read the slides, you are going to be
in trouble for the labs and the final exam.</li>
<li>Lecture periods: at 10 am or 1 pm. These go over some of the more
challenging concepts discussed in the lecture recordings, and delve a
bit deeper into some topics. This is NOT a review of all the slides that
were in the recording. And if a question is asked that is directly
addressed in the lecture recordings, you will likely be referred
there.</li>
</ul>
<p><strong>Development Environment:</strong> In this class, you may NOT
use Microsoft Visual Studio, any other Microsoft Windows-based
development environment, or any IDE (Integrated Development
Environment), for any reason. This includes, among others, Eclipse,
Netbeans, Xcode, Geany, Visual Studio, and Atom. This applies to program
development - obviously, you can use MS Office to edit text documents.
The purpose behind this rule is to introduce you to the Unix environment
- thus, all course work in this class is to be done in a Unix
environment (typically Linux or FreeBSD). We will discuss how to access
and/or install these environments in the beginning of the course.
<strong>In order to take this course, you agree to sign an honor pledge
that states that you will NOT use a Microsoft Windows-based development
environment or IDE for any course work.</strong></p>
<p><strong>Disabilities:</strong> The University of Virginia strives to
provide accessibility to all students. If you require an accommodation
to fully access this course, please contact the Student Disability
Access Center (SDAC) at (434) 243-5180 or [email protected]. If you are
unsure if you require an accommodation, or to learn more about their
services, you may contact the SDAC at the number above or by visiting
their website at
http://studenthealth.virginia.edu/student-disability-access-center/faculty-staff.</p>
<p><strong>Special Circumstances:</strong> Students with special
circumstances (athletics, extra time required on exams, final exam
conflicts, LNEC considerations, etc.) need to let me know at least
<strong>one week</strong> prior to when said accommodation will be
needed.</p>
<p><strong>Textbooks:</strong> Due to the high cost of textbooks, and
their relative low quality, there will be no recommended nor required
textbooks this semester. Instead, there will be selected <a
href="../docs/readings.html">Readings</a> (<a
href="../docs/readings.md">md</a>) that can be used in lieu of a
recommended textbook.</p>
<p><strong>Exams:</strong> There will be two midterm exams held during
laboratory sessions (combined worth 30% of the final grade) and one
final exam (worth 30% of the final grade). Note that we hope (but do not
guarantee!) to have the first exam returned before the SEAS drop
date.</p>
<ul>
<li>Midterm Exam 1: Tuesday, September 27th, during lab session</li>
<li>Midterm Exam 2: Tuesday, November 8th, during lab session</li>
<li>Final Exam: Saturday, December 15th from 9 a.m. to noon</li>
</ul>
<p><strong><em>YOU WILL HAVE TO BRING YOUR UVA ID TO ALL
EXAMS!!!</em></strong></p>
<p>Under <strong>NO</strong> circumstances will anybody be allowed to
take the final exam early.</p>
<p>You may submit lab questions for regrading within 10 days of when
they are returned to you (less time for the final due to the end of the
semester); this is done via the [course tools][41]. However, you MUST be
aware of the <a href="frivolous-regrades.html">Frivolous regrade
policy</a> (<a href="frivolous-regrades.md">md</a>), which will be
strictly enforced.</p>
<p><strong>Laboratories:</strong> There will be 11 or 12 programming
labs this semester, and they constitute 45% of your grade. Note that if
the number of labs changes, the respective weights for each lab will
also be adjusted and announced in class. The total weight of the labs
for the final grade will remain 45%, unless a change in the course
grading criteria (as above) is announced in class. The majority of the
work in this class is through the labs – there are no separate homework
assignments. The labs have different late policies, which will be
specified in more detail in the first lab. <strong>Your lab submission
must compile for you to receive <em>any</em> credit</strong> – this is
an advanced programming class, and under no circumstances should you be
submitting code that does not compile - we have a page on <a
href="../docs/compilation.html">compilation issues</a> (<a
href="../docs/compilation.md">md</a>) to help you if you cannot get your
code to compile. Note that the <em>entire</em> assignment will receive
zero credit if even <em>one</em> part of it does not compile.</p>
<p>All assignments will be submitted through Gradescope, which can be
accessed through Collab. Each assignment has 3 dates: an open date (when
you can start submitting the assignment), a due date (when it is due),
and a close date (the last point that you can submit the assignment);
the close date is 24 hours after the due date, due to the late policy
(which is explained in <a href="../labs/lab01/index.html">lab 1</a> (<a
href="../labs/lab01/index.md">md</a>)). Note that the assignment will be
available much earlier, typically Wednesday or Thursday of the week
before it is due. The dates are listed for the week of the lab - the lab
week starts on a Sunday and ends on a Saturday.</p>
<p>The various dates: open dates, due dates, and close dates, are listed
on the <a href="labduedates.html">Lab due dates page</a> (<a
href="labduedates.md">md</a>)</p>
<p>Please note, however, that there are a number of rules that we will
strictly follow:</p>
<ul>
<li>Pre-labs are due at the same time for everybody, regardless of your
lab section; that time is the beginning of the FIRST Tuesday lab.</li>
<li>In-labs are due at the end of the day on Tuesday.</li>
<li>Post-labs are due at 10 am on Friday, regardless of which lecture
section you are registered for; the exact time is on the <a
href="labduedates.html">lab due dates page</a></li>
<li>Any late lab part will receive 25% off (for just that part) for the
first 24 hours (or part thereof) that it is late, after which no credit
will be given. Note that a computer program does this deduction – so if
your lab is 1 second late, it still receives 25% off.</li>
</ul>
<p><strong>Computing resources:</strong> There are two specific computer
resources needed for this course:</p>
<ul>
<li>You need to have a working computer that can run a recent build of
<a href="https://www.virtualbox.org/">VirtualBox</a>, with enough hard
drive space (and memory) to use a course VirtualBox image (about 15 Gb
will be needed for the install, and then 10 Gb will be used once the
installation files are deleted). Any computer made in the last 3 years
will suffice for these requirements (and many older ones will as well).
It does not matter if it is a desktop or notebook; nor does the speed
matter.
<ul>
<li>If your computer breaks, you can contact the CS systems staff for a
loaner laptop – they are in the basement of Rice hall, in rooms ?? and
??. Tell them you are in my class, and they will provide you with a
machine to borrow.</li>
<li>If your computer breaks, please submit a support request (not yet
ready). If you are on grounds, we may be able to provide you with a
loaner machine.</li>
</ul></li>
</ul>
<p><strong>Attendance:</strong> Attendance is highly recommended but not
required in either lecture or lab. Unless you have received special
permission, you cannot attend labs that you are not enrolled in due to
space constraints. Please see the <a
href="course-introduction.html#/">first set of lecture slides</a> for
more information about the lab schedule. In particular with regards to
the fact that there is a lab the week of Thanksgiving break (in fall
semesters) or the weeks before and after spring break (in spring
semesters).</p>
<p><strong>Professionalism:</strong> We are all adults, and should act
like such. Acting in an unprofessional manner that disrupts the class
will first incur a stern talking-to. After that, a grade penalty may be
assessed. Examples include: disrupting class, trolling people on Piazza,
abusing the support request (not yet ready) system, etc. This is meant
to keep people from repeatedly disrupting class; we are not trying to be
super strict on this. While we generally expect to give a warning prior
to any other action, infractions that go well beyond unprofessional may
incr penalties with no warning.</p>
<p><strong>Honor Policy:</strong> There have been a large number of
honor violations in this class and other low-level CS courses recently.
Outside the normal UVa honor policy rules, we have these additional
rules:</p>
<ol type="1">
<li>If you are looking at another student’s source code for ANY reason
(including code from a student from a previous semester), you are in
violation of the honor policy. You may look at another student’s source
code after the program has been submitted by BOTH parties.</li>
<li>If you try to hack my submission system, you will be brought up on
honor charges, failed for the course, and I will personally call the
police. This includes any sort of hacking such as: fork bombs to crash
the system, opening up network sockets, looking around the file system,
etc. The system has capabilities to detect and/or prevent these from
happening, and a file cannot be removed once it is submitted (you can
re-submit a file, but the old one is still saved). An honest mistake on
a program, or a program crash, is not what we are talking about here -
instead, an intentional and malicious hacking attempt is what will bring
down the wrath.</li>
<li>There are multiple midterm periods where students take exams, with a
break between the the individual section times. Discussing the exam with
a student who has not taken it is a violation of the honor policy.</li>
<li>Releasing your homework online, including a public github
repository, is an honor violation</li>
<li>Using a computer to generate your <em>assembly</em> code, instead of
writing yourself, is an honor violation (this includes using the
compiler to generate assembly code for submission, although not for
including in a report)</li>
<li>We realize we should have to say this, but we will not sign more
than one conscientious retraction for a given student within one
semester.</li>
<li>We thought this was obvious also, but apparently we have to say it:
you can’t submit somebody else’s code as the main part of the assignment
and claim it is valid because you cited that code. The point of the labs
is for <em>you</em> to do the work, not for you to do a Google
search.</li>
</ol>
<p>Any honor violation or cheating will be referred to the honor
committee, <strong>and will result in an immediate failure for the
course</strong>, regardless of the outcome of the honor trial or your
other grades. No exceptions! I am very strict on this, and one have
successfully raised honor charges against students in the past due to
violations of this policy.</p>
<p><strong>Your Well Being:</strong> The Engineering School proudly
serves as a safe space for its students and aims to promote their well
being. If you are feeling overwhelmed, stressed, or isolated, there are
many individuals here who are ready and wanting to help. In addition to
the course instructors, you can seek help through the Engineering
Undergraduate office (Thornton A122), or Alex Hall (aec5d, 924-7601) who
is the assistant dean of students for the Engineering school.</p>
<p>Alternatively, there are also other University of Virginia resources
available. The Student Health Center offers Counseling and Psychological
Services (CAPS) for its students. Call 434-243-5150 (or 434-972-7004 for
after hours and weekend crisis assistance) to get started and schedule
an appointment. If you prefer to speak anonymously and confidentially
over the phone, call Madison House’s HELP Line at any hour of any day:
434-295-8255.</p>
<p>If you or someone you know is struggling with gender, sexual, or
domestic violence, there are many community and University of Virginia
resources available. The Office of the Dean of Students, Sexual Assault
Resource Agency (SARA), Shelter for Help in Emergency (SHE), and UVA
Women’s Center are ready and eager to help. Contact the Director of
Sexual and Domestic Violence Services at 434-982-2774.</p>
<p><strong>Reasonable Modifications:</strong> Try as we might, we cannot
predict the future. Yet. There may be situations that arise during the
semester that are not adequately covered by this syllabus, and which
will require us to make adaptations or modifications during the
semester. We do not expect this to happen often. And if we knew what
types of situations these would be, we would change professions to
investing and fortune telling.</p>
</body>
</html>