|
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