Skip to content

Commit 09f4d72

Browse files
committed
first draft
1 parent 978ebea commit 09f4d72

File tree

1 file changed

+259
-2
lines changed

1 file changed

+259
-2
lines changed

README.md

Lines changed: 259 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,259 @@
1-
# IU-Fall-2021
2-
Course web page for Fall 2021.
1+
## Course Webpage for Compilers (P423, P523, E313, and E513)
2+
3+
Indiana University, Fall 2021
4+
5+
6+
High-level programming languages like Racket and Python make it easier
7+
to program compared to low-level languages such as x86 assembly
8+
code. But how do high-level languages work? There's a big gap between
9+
high-level languages and machine instructions for modern computers. In
10+
this class you learn how to translate Racket or Pythong programs (your
11+
choice!) all the way to x86 assembly language.
12+
13+
Traditionally, compiler courses teach one phase of the compiler at a
14+
time, such as parsing, semantic analysis, and register allocation. The
15+
problem with that approach is it is difficult to understand how the
16+
whole compiler fits together and why each phase is designed the way it
17+
is. Instead, each week we implement a successively larger subset of
18+
the input language. The very first subset is a tiny language of
19+
integer arithmetic, and by the time we are done the language includes
20+
first-class functions.
21+
22+
**Prerequisites:** Fluency in Racket or Python is highly recommended
23+
as students will do a lot of programming in Racket or Python. Prior
24+
knowledge of an assembly language helps, but is not required.
25+
26+
**Textbook:**
27+
28+
* The Racket version of the textbook for the course available
29+
[here](https://www.dropbox.com/s/ktdw8j0adcc44r0/book.pdf?dl=1).
30+
* The Python version of the textbook for the course available
31+
[here](https://www.dropbox.com/s/mfxtojk4yif3toj/python-book.pdf?dl=1).
32+
33+
If you have suggestions for improvement, please either send an email
34+
to Jeremy or, even better, make edits to a branch of the book and
35+
perform a pull request. The book is at the following location on
36+
github:
37+
38+
https://github.com/IUCompilerCourse/Essentials-of-Compilation
39+
40+
**Lecture:** Tuesdays and Thursdays 3:15-4:30pm, Informatics Building
41+
(Myles Brand Hall), Room E130.
42+
43+
**Lecture Notes and Recordings:**
44+
45+
46+
**Office hours**
47+
48+
* Jeremy Siek (jsiek): TBD
49+
50+
**Topics:**
51+
52+
* Instruction Selection
53+
54+
* Register Allocation
55+
56+
* Static type checking
57+
58+
* Conditional control flow
59+
60+
* Mutable data
61+
62+
* Garbage collection
63+
64+
* Procedures and calling conventions
65+
66+
* First-class functions and closure conversion
67+
68+
* Dynamic typing
69+
70+
* Generics
71+
72+
* High-level optimization (inlining, constant folding, copy
73+
propagation, etc.)
74+
75+
**Grading:**
76+
77+
Course grades are based on the following items. For the weighting, see
78+
the Canvas panel on the right-hand side of this web page. Grading
79+
will take into account any technology problems that arrise, i.e., you
80+
won't fail the class because your internet went out.
81+
82+
* Assignments
83+
* Quizzes
84+
* Midterm Exam (October 21, in class)
85+
* Final Exam (Week of December 12)
86+
87+
**Assignments:**
88+
89+
Organize into teams of 2-4 students. Assignments will be due bi-weekly
90+
on Mondays at 11:59pm. Teams that include one or more graduate
91+
students are required to complete the challenge exercises.
92+
93+
Assignment descriptions are posted on Canvas.
94+
Turn in your assignments by creating a github repository and giving
95+
access to Jeremy (jsiek).
96+
97+
Assignments will be graded based on how many test cases they succeed on.
98+
Partial credit will be given for each "pass" of the compiler.
99+
Some of the tests are in the public support code (see Resources below)
100+
and the rest of the tests will be made available on Sunday night, one
101+
day prior to the due date. The testing will be done on the linux
102+
machine kj.luddy.indiana.edu named
103+
after [Katherine
104+
Johnson](https://en.wikipedia.org/wiki/Katherine_Johnson) of NASA
105+
fame. The testing will include both new tests and all of the tests
106+
from prior assignments.
107+
108+
You may request feedback on your assignments prior to the due date.
109+
Just commit your work to github and send us email.
110+
111+
Students are responsible for understanding the entire assignment and
112+
all of the code that their team produces. The midterm and final exam
113+
are designed to test a student's understanding of the assignments.
114+
115+
Students are free to discuss and get help on the assignments from
116+
anyone or anywhere. When posting questions on Piazza, it is OK to post
117+
your code.
118+
119+
In contrast, for quizzes and exams, students are asked to work
120+
alone. The quizzes and exams are closed book. We will be using
121+
Respondus Monitor for online proctoring.
122+
123+
The Final Project is due Dec. 10 and may be turned in late up to
124+
Dec. 15.
125+
126+
**Late assignment policy:** Assignments may be turned in up to one
127+
week late with a penalty of 10%.
128+
129+
**Slack Chat/Messaging:**
130+
[Workspace](http://iu-compiler-course.slack.com/) (
131+
[signup](https://join.slack.com/t/iu-compiler-course/signup?x=x-p1325281886868-1312364974614-1331891515409)
132+
using your iu email address).
133+
134+
**Resources:**
135+
136+
* [Github repository for support code and test suites is here](https://github.com/IUCompilerCourse/public-student-support-code)
137+
* [Racket](https://download.racket-lang.org/)
138+
* [Racket Documentation](https://docs.racket-lang.org/)
139+
* [Notes on x86-64 programming](http://web.cecs.pdx.edu/~apt/cs491/x86-64.pdf)
140+
* [x86-64 Machine-Level Programming](https://www.cs.cmu.edu/~fp/courses/15411-f13/misc/asm64-handout.pdf)
141+
* [Intel x86 Manual](http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-architectures-software-developer-manual-325462.pdf?_ga=1.200286509.2020252148.1452195021)
142+
* [System V Application Binary Interface](https://software.intel.com/sites/default/files/article/402129/mpx-linux64-abi.pdf)
143+
* [Uniprocessor Garbage Collection Techniques](https://iu.instructure.com/courses/1735985/files/82131907/download?wrap=1) by Wilson.
144+
* [Fast and Effective Procedure Inlining](https://www.cs.indiana.edu/~dyb/pubs/inlining.pdf) by Waddell and Dybvig.
145+
146+
**Bias-Based Incident Reporting.**
147+
148+
Bias-based incident reports can be made by students, faculty and
149+
staff. Any act of discrimination or harassment based on race,
150+
ethnicity, religious affiliation, gender, gender identity, sexual
151+
orientation or disability can be reported through any of the options:
152+
153+
154+
155+
2) call the Dean of Students Office at (812) 855-8188 or
156+
157+
3) use the IU mobile App (m.iu.edu). Reports can be made anonymously.
158+
159+
**Dean on Call.**
160+
161+
The Dean of Students office provides support for students dealing with
162+
serious or emergency situations after 5 p.m. in which an immediate
163+
response is needed and which cannot wait until the next business
164+
day. Faculty or staff who are concerned about a student’s welfare
165+
should feel free to call the Dean on Call at (812) 856-7774. This
166+
number is not to be given to students or families but is for internal
167+
campus use only. If someone is in immediate danger or experiencing an
168+
emergency, call 911.
169+
170+
**Boost.**
171+
172+
Indiana University has developed an award-winning smartphone app to
173+
help students stay on top of their schoolwork in Canvas. The app is
174+
called “Boost,” it is available for free to all IU students, and it
175+
integrates with Canvas to provide reminders about deadlines and other
176+
helpful notifications. For more information, see
177+
https://kb.iu.edu/d/atud.
178+
179+
**Counseling and Psychological Services.**
180+
181+
CAPS has expanded their services. For information about the variety of
182+
services offered to students by CAPS visit:
183+
http://healthcenter.indiana.edu/counseling/index.shtml.
184+
185+
186+
**Disability Services for Students (DSS).**
187+
188+
The process to establish accommodations for a student with a
189+
disability is a responsibility shared by the student and the DSS
190+
Office. Only DSS approved accommodations should be utilized in the
191+
classroom. After the student has met with DSS, it is the student’s
192+
responsibility to share their accommodations with the faculty
193+
member. For information about support services or accommodations
194+
available to students with disabilities and for the procedures to be
195+
followed by students and instructors, please visit:
196+
https://studentaffairs.indiana.edu/disability-services-students/.
197+
198+
**Reporting Conduct and Student Wellness Concerns.**
199+
200+
All members of the IU community including faculty and staff may report
201+
student conduct and wellness concerns to the Division of Student
202+
Affairs using an online form located at
203+
https://studentaffairs.indiana.edu/dean-students/student-concern/index.shtml.
204+
205+
**Students needing additional financial or other assistance.**
206+
207+
The Student Advocates Office (SAO) can help students work through
208+
personal and academic problems as well as financial difficulties and
209+
concerns. SAO also assists students working through grade appeals and
210+
withdrawals from all classes. SAO also has emergency funds for IU
211+
students experiencing emergency financial crisis
212+
https://studentaffairs.indiana.edu/student- advocates/.
213+
214+
**Disruptive Students.**
215+
216+
If instructors are confronted by threatening behaviors from students
217+
their first obligation is to insure the immediate safety of the
218+
classroom. When in doubt, call IU Police at 9-911 from any campus
219+
phone or call (812) 855-4111 from off-campus for immediate or
220+
emergency situations. You may also contact the Dean of Students Office
221+
at (812) 855-8188. For additional guidance in dealing with difficult
222+
student situations:
223+
https://ufc.iu.edu/doc/policies/disruptive-students.pdf.
224+
225+
**Academic Misconduct.**
226+
227+
If you suspect that a student has cheated, plagiarized or otherwise committed academic misconduct, refer to the Code of Student Rights, Responsibilities and Conduct:
228+
http://studentcode.iu.edu/.
229+
230+
**Sexual Misconduct.**
231+
232+
As your instructor, one of my responsibilities is to create a positive
233+
learning environment for all students. Title IX and IU’s Sexual
234+
Misconduct Policy prohibit sexual misconduct in any form, including
235+
sexual harassment, sexual assault, stalking, and dating and domestic
236+
violence. If you have experienced sexual misconduct, or know someone
237+
who has, the University can help.
238+
239+
If you are seeking help and would like to speak to someone
240+
confidentially, you can make an appointment with:
241+
242+
* The Sexual Assault Crisis Services (SACS) at (812) 855-8900
243+
(counseling services)
244+
245+
* Confidential Victim Advocates (CVA) at (812) 856-2469 (advocacy and
246+
advice services)
247+
248+
* IU Health Center at (812) 855-4011 (health and medical services)
249+
250+
It is also important that you know that Title IX and University policy
251+
require me to share any information brought to my attention about
252+
potential sexual misconduct, with the campus Deputy Title IX
253+
Coordinator or IU’s Title IX Coordinator. In that event, those
254+
individuals will work to ensure that appropriate measures are taken
255+
and resources are made available. Protecting student privacy is of
256+
utmost concern, and information will only be shared with those that
257+
need to know to ensure the University can respond and assist. I
258+
encourage you to visit
259+
stopsexualviolence.iu.edu to learn more.

0 commit comments

Comments
 (0)