Syllabus - COMP590 - 140
The Interpretation and Applications of Little Languages
- Term Spring 2019
- Department COMP - Computer Science
- Course Number 590
- Sections 140 - MWF - 1:25pm
- Classroom Greenlaw 101
Instructor Info
- Name Kris Jordan
- Office SN254
- Email kris@cs.unc.edu
- Twitter https://twitter.com/KrisJordan
Teaching Assistants
- Brooks Townsend
- Duncan Britton
- Hank Hester
- Helen Qin
- Jay Randolph
- Tabatha Seawell
Textbook
The textbook for this course is Programming Rust: Fast, Safe Systems Development by Jim Blandy and Jason Orendorff. You will have required, assigned readings from this text and should have plan to have it procured by January 11th. You can find it on Amazon here: https://www.amazon.com/Programming-Rust-Fast-Systems-Development/dp/1491927283
We will have additional assigned readings throughout the semester from online sources.
Course Description, Target Audience, and Prerequisites
This course is an introduction to little, domain-specific languages in the context of a Unix-like programming environment with a systems programming language implementation emphasis (Rust and C). There are three primary goals:
- Bring computational theory to life with pragmatic applications in little language processors
- Gain experience working in systems programming languages
- Practice software engineering in the context of a Unix-like programming environment
You must have completed COMP401 and COMP410 to enroll in this course. This course is designed to help students succeed in more advanced 500-level courses which dive deeper into programming languages, compilers, and operating systems.
Course Requirements and Policies
You should attend the lectures on every meeting of the week and check the course web pages for announcements and updates. You should complete all assigned readings before lecture begins. You should hand-in programming assignments and worksheets on time.
The workload of this course is anticipated to be on the medium-high end of a three hour, upper-level computer science course.
Bring your laptop to every lecture session. Please respect your fellow students by maintaining proper etiquette in class; this includes:
- Not arriving late habitually or leaving in the midst of class;
- Not talking over the instructor, sleeping, reading other material etc. in class;
- Keeping cellphones, etc. off during class;
- PLEASE DO NOT using your laptop to surf the web, watch Netflix, iMessage, use Facebook, etc.
Grading Criteria
You will be evaluated in this course as follows:
- Problem Sets (Programs and Worksheets) - 30%
- 2x Midterms - 20% Each
- Final - 20%
- Quizzes and Participation - 10%
Regrade requests on quizzes are handled through Gradescope. Regrade requests will only be accepted for the 72 hours following grade release on Gradescope.
In order to pass the course you must score higher than a 40% on the final exam.
Late Submission Policy
Autograded problem sets will be accepted up to 2 days late for a 20% late penalty immediately following the grading deadline. All problem set submissions will be handed-in via GitHub and Gradescope.
Hand graded worksheets will be accepted up to 1 day late for a 20% late penalty immediately following the grading deadline. All worksheets will be handed-in via Gradescope.
University Approved Excused Absences
We will hold makeup exams in the event of needing to miss class for a university approved absence. You must obtain this documentation from the Dean of Students' office.
Honor Code and Collaboration Policy
In order to do well in this course, you must come to your own individual understanding of the material.
Collaboration Policy on General Course Content
You absolutely may, and are encouraged to, discuss general course concepts (i.e. not assignment-specific) material with anyone, including other current students and tutors. This includes going over lecture slides, documentation, code examples covered in lecture, study guides, etc. The examples you use to discuss general course materials must be from lecture or your own creativity, you cannot use examples directly drawn from assignments.
Collaboration on Problem Sets
On assignments, you are not allowed to:
- Share code or let a peer view your code
- Use shared code or view a peer's code
- Type on a peer's keyboard or let anyone type on yours
With proper citation of collaboration in your problem set headers, you are allowed to:
- Discuss high-level concepts, approaches, and pseudo-code ideas on whiteboards
- Help debug a peer's code by viewing their screen under the following conditions:
- Your own laptop must be fully closed and you must not share any code
- You may not touch their keyboard
- They should do 80% of the talking and your 20% should be asking questions
Class Participation
Class attendance and participation is required to do well in this course. Class participation and quizzes are worth 10% of your final grade. Half of these points are based on attendance and responding to polls in class, the other half quizzes.
Disclaimer
The instructor reserves the right to make changes to the syllabus, including assignment due dates, quiz dates, and midterm dates. These changes will be announced as early as possible.