Spring Falls (itch) Mac OS
CS 4410/6410: Compiler Design
- Crazy as it may seem, installing spring now comes down to this command: sudo port install springrts binutils. WARNING: this will take a.long. while, especially on a fresh system (ballpark figure: over an hour with an Intel C2D 2.2GHz cpu).
- IMac — beautiful, intuitive all-in-one desktops with incredible processors, a Retina display, and the world’s most advanced desktop operating system.
Syllabus --Spring 2020
NOTE: This page is for an old semester of CS4410. To go to the current semester, click here.
Spring Falls is a puzzle game about water, erosion, and watching things grow. Manipulate the landscape and bring wildflowers to life on a peaceful mountainside. Overview: Shadows Over Solomon Falls is a mystery RPG with minor lifesim elements. The game is very plot focused with major decisions that drive the story forward. Inspired by urban fantasy and horror TV, it features transformations ranging from the mundane to the bizarre, supported by a cast.
Meeting places & times
Forsyth Building 237, Monday and Wednesday 2:50 PM – 4:30 PM
Course staff & office hours
Instructor |
| 326 WVH | Thursday 3:00–5:00pm, | |
TAs: | Matt Dailis |
| WVH 308 breakout area | Wednesday 4:30–6:00pm |
Justin Slepak |
| WVH 308 | Tuesday 1:30–3:30pm | |
CCIS Tutors: |
|
General information
CS 4410 covers the implementation of efficient compilers for programminglanguages. The course focuses on the connections between language features andthe impact they have on the design of a compilier, including any associatedalgorithms and pragmatic issues, and practical applications including thoseoutside of programming languages proper. Participants build a working compilerincluding lexical analysis, parsing, type checking, code generation, andregister allocation. As a secondary emphasis, the course exposes students torun-time issues and optimization.
Prerequisites
This course assumes familiarity with programming in the style of How toDesign Programs, and basic knowledge of functional programming as introducedin CS 2510, and C programming as introduced in CS3650.
Exams
At the moment, I am not planning on giving formal exams. However, wewill likely have two or three written assignments (as opposed to theproject assignments) that will serve a similar purpose. There is a final examtime scheduled for this course, but we may not use it. We will likelyhave project presentations due during exam week, so don’t assume the course isover before then.
Materials
Software
Programming assignments will use several pieces of software:
OCaml, version 4.09 – try toinstall the latest version; there have been breaking changes in the standardlibrary prior to this, and not all of the starter code might work for you otherwise.
OUnit, a unit-testing framework similar to JUnit. The easiest way to install OUnit is via OPAM, the OCaml package manager.
nasm, an open-source assembler
Valgrind, a tool for checking memory-safety
Clang, a compiler for C programs. (You may use gcc if you prefer, but you’ll be on your own to ensure that everything works correctly.)
There is no specific IDE for OCaml; I tend to use emacs, but you may use any editor you wish.
Books
There is no required textbook, but you may find these booksuseful.
|
|
|
Online resources
OCaml Resources
Spring Falls (itch) Mac Os 11
OCaml home pageand usermanual
Introduction to Objective Caml, book on OCaml by Jason Hickey(online version)
A nice OCamloverviewby Scott Smith
Some OCamltutorials
For OCaml support in emacs, downloadtuareg (recommended)orthis.If you’re feeling adventurous,thesetwo packages provide someinteresting but preliminary support for OCaml via a language-server-protocol implementation.
Comparisonof SML and OCaml, by Andreas Rossberg
ledit, a tool toprovide emacs-like editing (and history) to the OCaml toplevel. Information onhow to use ledit, and other tips for using the toplevel are availablehere
See the INRIA web pages for information onocamllexand ocamlyacc.
An interactivetutorial on using Git
X86 Resources
X64 Resources
(I will add to this list over the semester as I find useful guides.Email me if you have suggestions.)
A tutorial onNASM (specifically x64- and macOS-related issues)
Lectures
This table specifies the lecture schedule; topics are tentative.
I will be publishing lectures notes somewhat on-demand, as I updatethem for x64 assembly. In the meantime I’m leaving them private, so they arenot needlessly confusing.
Date | Topics (tentative and approximate) | Materials |
1/07 M | Introduction, OCaml practice | |
1/09 W | Tiny compiler: grammar, abstract syntax, and instructions | |
1/14 M | Names, scope and (simple) stacks | |
1/16 W | A-Normal Form | |
1/21 M | No class: MLK Day | |
1/23 W | ||
1/28 M | Multiple data types and tagging values | |
1/30 W | Errors and calling functions | |
2/3 M | I want to play free slots. Function declarations | |
2/5 W | Overflow and Tail Calls | notes, notes and notes |
2/10 M | α-renaming, Type checking | |
2/12 W | Type inference | |
2/17 M | No class: Presidents’ Day | |
2/19 W | Heap allocation and pairs | |
2/24 M | Mutually-recursive declarations and types; mutable tuples | |
2/26 W | Work on Taipan Tamil serial actress salary. | |
3/2 M | No class: Spring Break | |
3/4 W | No class: Spring Break | |
3/9 M | First-class functions | |
3/11 W | Closures; work on Egg-eater | |
3/16 M | Memory management | |
3/18 W | Automated memory management, Mark/compact | |
3/23 M | Enrichment: Pyret runtime, printing values deeper than the stack depth | |
3/25 W | Enrichment: Pyret compilation and stack management | |
3/30 M | Intermediate representations, abstract locations, and register allocation; CSE | |
4/1 W | Objects | |
4/06 M | Lexing | |
4/08 W | Parsing | |
4/13 M | Wrap-up |
Testing
Testing your code is sufficiently important that we’ve devoted an entire page to it.Please read these notes, for each and every assignment you work on.
Homework schedule
Homework will usually be due at 8:59 PM; the day of the week varies, soyou should check each individual assignment to be sure. General homeworkpolicies are here.
This homework schedule is tentative and subjectto change at the instructor’s discretion.
Link | Assigned | Due |
Assignment 0 | Mon 01/06 | Fri 01/10 |
Assignment 1 | Mon 01/06 | Mon 01/13 |
Assignment 2 | Tue 01/14 | Tue 01/21 |
Assignment 3 | Wed 01/22 | Thu 01/30 |
Assignment 4 | Fri 01/31 | Thu 02/06 |
Assignment 5 | Fri 02/07 | Tue 02/18 |
Assignment 6 | Thu 02/20 | Fri 02/28 |
Assignment 7 | Wed 02/26 | Fri 02/28 |
Assignment 8 | Mon 03/09 | Sat 03/21 |
Assignment 9 | Sun 03/22 | Wed 04/01 |
Assignment 10 | Thu 04/02 | Mon 04/13 |
Assignment 11 | Mon 04/06 | Wed 04/08 |
Course policies
Collaboration and academic integrity
You may not collaborate with anyone on any of the exams. Youmay not use any electronic tools, including phones, tablets,netbooks, laptops, desktop computers, etc. If in doubt, ask amember of the course staff.
All homework assignments will be completed with apartner; some may involve a larger team(TBD). You must collaborate with your assigned partner or team, asspecified, on homework assignments. You may request help from anystaff member on homework. (When you areworking with a partner, we strongly recommend that you requesthelp with your partner, rather than solo.) You may use thePiazzabulletin board to ask questions regarding assignments, solong as your questions (and answers) do not reveal informationregarding solutions. You may not get any help from anyone else ona homework assignment; all material submitted must be your own. Ifin doubt, ask a member of the course staff.
Providing illicit help to another student is also cheating, and willbe punished the same as receiving illicit help. It is yourresponsibility to safeguard your own work.
Students who cheat will be reported to the university’s officeon academic integrity and penalized by the course staff, at ourdiscretion, up to and including failing the course.
If you are unclear on any of these policies, please ask amember of the course staff.
Homework
In general, you should submit your homework according to theinstructions on the web page for the individual assignments.
We have written aguideto using the handin server, which should answer most questions you have. Ifsomething is still unclear after reading that, please ask an instructor.
Submission troubles
If you have trouble submitting to the server and you have time before thedeadline, please wait few minutes and try again; it may also be worth checkingon Piazza to find out whether other students are experiencing similardifficulties. If upon retrying you still cannot submit, email Dr. Lerner(blerner@ccs
). Or if you don’t have time to try again then youshould submit by email. In this (rare!) case, email your instructor withthe subject line “HW N submission” (where N is the appropriatehomework number). Attach your source files to the email individually; donot use a ZIP file or other kind of archive. Our email systems rejectmessages with archive attachments.
Late days & late work
Each student gets four free, no-questions-asked late days for the term.The purpose of late days is make the extension process fair andtransparent by getting the instructors out of the extension-grantingbusiness entirely. Instead, when you need an extension, you can takeone — provided you have a late day remaining.
Using a late day is automatic: simply submit the homework up to one daylate. The server will keep track of the number of used late days. Conserveyour late days carefully.
Spring Falls (itch) Mac Os X
No more than one late day may be used on any one homework.Late days cannot be divided fractionally, but must be used whole.Late days cannot be transferred to or shared with a partner, so in orderto take an extension both you and your partner must have sufficient latedays remaining.Choose your partners carefully.
Grades
Your grade will be based on your performance on theproblem sets, and the written assignments; exact weights TBD.
The grades will computed on an absolute basis: there will be nooverall curving. The instructor may choose to curve an individual assignment,but please do not bank on such a chance.
The estimated mapping of raw point totals to letter grades is givenbelow. Please note that these grade boundaries may move slightly ineither direction at the discretion of the instructor: if a particularbreakpoint falls in the middle of a tight cluster of numeric grades, we willattempt to move the breakpoint to give that whole cluster the same lettergrade. If, near the end of the semester, you are concerned that your grade ishovering near a breakpoint, see me to discuss your concerns.
Cutoff | 93% | 90% | 86% | 83% | 80% | 76% | 73% | 70% | 66% | 63% | 60% | else |
Letter grade | A | A- | B+ | B | B- | C+ | C | C- | D+ | D | D- | F |
IP (a.k.a. Internet protocol) INFO
Spring Falls (itch) Mac Os Catalina
The computer IP address tracking statistics is machine attained respectively for 17.58.99.7. This host has the device IP address 17.58.99.7. The computer IP complies to correct specifications of an IPv4 device IP, which has a compressed value of 289039111.This IP address falls within a hardware Internet Protocol Address amplitude of 17.58.99.0 - 17.58.99.255. The reverse DNS for the checked host is apple.com.
A domain name pointer appears to be 17-58-99-7.applebot.apple.com. A full response for the inspected reverse DNS query was captured as 17-58-99-7.applebot.apple.com at the time of the request.
IP address
The data for this tracing evidence shows that the connection to this host has an assigned physical address in United States. The timezone of the location of this host is America/Chicago. The last user of this hardware IP address that connected to the website was using a personal computer running Mac OS X 10.10.1 with Safari 8.0.2 browser.The host evaluated on this tracking information determined to belong to a bot/spider group as indicated by User agent and host name provisional flags.