forked from uva-cs/pdr
-
Notifications
You must be signed in to change notification settings - Fork 0
/
syllabus.html
100 lines (100 loc) · 17.9 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
<!DOCTYPE html>
<html>
<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 type="text/css">code{white-space: pre;}</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>
<h2 id="spring-2020">Spring 2020</h2>
<h3 id="instructor">Instructor</h3>
<ul>
<li><a href="http://www.cs.virginia.edu/~asb">Aaron Bloomfield</a> / <a href="mailto:aaron@virginia.edu">aaron@virginia.edu</a>. Office: Rice Hall, room 402. Office hours: M 11-12, W 12-1, F 9-10</li>
</ul>
<h3 id="course-info">Course Info</h3>
<ul>
<li>Lectures: M/W/F 10:00-10:50 (CHM 402) or 1:00-1:50 (Minor 125)</li>
<li>Email: none; fill out a <a href="https://libra.cs.virginia.edu/~pedagogy/support.php">support request</a> instead</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 6-10 on Sundays, Mondays, Wednesdays, and Thursdays in the Thornton stacks; faculty office hours are listed <a href="course-introduction.html#/profoh">here</a>; all office hours start the Sunday after classes start</li>
<li>Laboratory Meetings (in Olsson 001): all 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 you cannot meet with me during office hours, e-mail and I will try to find the time to meet. That being said, like everybody else I get quite busy, so it may take a day or more to find a time to meet. And 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/portal/site/eb965f29-11d0-4069-9140-6b4eb0f44444/tool-reset/495df88d-2624-46bf-872f-db154dd6048e">anonymous feedback tool through Collab</a>, or you can send an e-mail (please do NOT email the TAs directly). I tend to get bogged down by e-mail as the semester progresses, so seeing me in person (right after lecture, during office hours, etc.) is often a good way to get a more immediate response.</p>
<p><strong>Prerequisites:</strong> CS 2110 (Software Development Methods) or CS 2220 (Engineering Software); and CS 2102 (Discrete Math), all with grades of C- or above. Note that CS 2102 is allowed as a co-requisite, but see the details for this in the <a href="course-introduction.html#/">first slide set</a> (specifically, <a href="course-introduction.html#/cs2102">here</a>).</p>
<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 will 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. <strong>Note:</strong> We reserve the right to modify the weighting (changing the curve, adding pop quizzes, etc.), especially if attendance drops off significantly. If this does happen, it will be clearly announced in lecture.</p>
<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 sdac@virginia.edu. 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 25% of the final grade). Note that we hope (but do not guarantee!) to have the first exam graded and returned before the SEAS drop date.</p>
<ul>
<li>Midterm Exam 1: Tuesday, February 18th, during lab session</li>
<li>Midterm Exam 2: Tuesday, March 31st, during lab session</li>
<li>Final Exam: Thursday, April 30th from 7 p.m. to 10 p.m.
<ul>
<li>This is a common exam time, and conflicts with other courses (BIOL 2100, CS 2110, KOR 1010, KOR 2010, KOR 3010, STAT 2120, and STAT 3120)</li>
<li>Let us know by the end of January if you have a conflict (via a support request); we will deal with scheduling conflicts later in the semester</li>
</ul></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. You may <strong>ONLY</strong> request to take the final exam at a different time if you have a final exam <strong>CONFLICT</strong>, not a busy final exam schedule. However, that request <strong><em>MUST</em></strong> be submitted by the end of January. Since it is a common exam time, the only conflicts are the courses listed on UVa official exam schedule. For Spring 2020, they are: APMA 3110, APMA 3140, and ECON 2020 (sections 001 and 002)</p>
<p>You may submit exam 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 <a href="https://libra.cs.virginia.edu/~pedagogy/">course tools</a>. 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 (roughly 4% per lab, although some labs may be weighted more than others). 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 our custom assignments tool, which can be accessed through Collab or <a href="https://libra.cs.virginia.edu/~pedagogy/">here</a> (Netbadge login required). 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 the start of the <em>first</em> lecture 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>
</ul></li>
<li>There are a few documents that you will have to print (the UNIX honor pledge, etc.). We will attempt to provide copies for you. The total printing load will be under 5 pages for the entire semester. You will need to obtain access to a printer for those pages.</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 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>
</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. 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 fortune telling...</p>
</body>
</html>