Description
CS50200 - Compiling and Programming Systems
Fall 2014
Days: Tuesday Thursday 3:00-4:15 pm
Credit Hours: 3
Instructor: Zhiyuan Li (LWSN 3154H) 765-494-7822
zhiyuanli@purdue.edu
TA(s): Praveen Kumar Gurumurthy
Office Hours : M - 10-11am ; Th - 1.15-2.15pm
HAAS 266 #8
praveen@purdue.edu
Nithya Raghavan
nraghava@purdue.edu
Office hours: See staff info on Piazza
Instructor contact hours for on-line students: TuTh 4:15-5:15 on Skype
(additional skype hours by appointment)
Textbook :
Compilers: Principles, Techniques, and Tools (Second Edition) A Aho & M. Lam & Sethi & Ullman Addison-Wesley 978-032-148681-3
Course Work:
Homework Assignments (20%)
Midterm (20%)
Final exam (30%)
Projects (30%)
Midterm date/time/place:
October 16th (Thursday), 3:00-4:15pm in the class room.
(Off-campus students follow the instruction from the distance-learning staff.)
NOTE: No make-up exam will be given, except for extreme difficulty such as illness certified by Purdue's medical facility.
Final Exam date/place:
(Please confirm with Purdue's schedule)
Projects:
There will be two projects based on the GNU GCC compiler framework:
Project 1 -- Regenerate C program from the internal representation (AST). This is a warm up project to get familiar with the GCC internal representation.
Project 2 -- Data flow analysis and optimization.
Learning Objective:
This course presents an overview of the principles and techniques in modern compilers, which gives students a deeper understanding of the syntactic rules and the functionality of modern programming languages, as well as the use of the compiler for enhancing program quality. The course also gives the students the opportunity to practice the implementation of certain key components in the compiler front-end and back-end.
Course Contents:
The course introduces the theoretical foundation for both the front end and the
backend of the compiler. For front end, finite automata, regular expression,
context free grammars and parsing state computation form the theoretical base.
For the back end, the most important theories concern the analysis of
program's control and data flow, control and data dependences, and the
concept of parallelism and locality analysis. The course also has a heavy
emphasis on experimentation, using a state of the art compiler environment to
implement both front-end and back-end techniques.
Topics Covered:
The first part of the course will be an overview of the "front end" of the compiler
and basic mechanism for code generation , including the following components:
Lexical analysis, examples of context free grammars, top-down parsing,
bottom-up parsing, abstract syntax tree, basic type checking, symbol
tables,intermediate code format and generation, machine code generation,
garbage collection, code generation for programs written in object-oriented
languages. The second part of the course gives more in depth coverage of the
fundamental program analysis techniques commonly used by compilers and
software engineering tools, which include, but not limited to, the following: Control flow and control dependence, data flow and data dependence analysis,
interprocedural analysis, pointer analysis, how such analyses are applied to
program transformations for better performance and to enhancement of software reliability.
Prerequisites:
A bachelor degree in computer science or an equivalent field. Solid
understanding of syntax and semantics of high level programming languages,
computer organization, data structures and combinatorial algorithms. Strong skill in C programming, especially in dealing with dynamic data structures such as lists and graphs. Familiarity with instruction-level processor architecture.
Grades Posting:
To meet Purdue's student privacy regulation requirement, all grades are stored on
http://www.itap.purdue.edu/learning/tools/blackboard/index.cfm
Academic Integrity Policy
Unless specified otherwise explicitly in the specific assignment/project handout, all assignments and projects must be completed by each student independently. Copying, either electronically or manually, from others' work (from Purdue students or external sources such as the internet) is a violation of the policy. Letting a student copy one's work is also a violation. Depending on the degree of severity of the violation, the first offense will receive a penalty of either a zero point given to the specific assignment or an automatic down-grade of the final letter grade. The second offense will result in a failing letter grade for the course and a report to the university.
Late Work Policy:
Each student is given four "late days" through the entire semester for possible late turn-in of a project. Each use will be whole days, not a fraction such as 1/2 day. The TA will keep a record on the grade book on how many "late days" a student has used.
No other late turn-in of projects will be accepted. Late work for written home works is not accepted. Therefore if a student has a travel scheduled, the homework should be turned in before the travel
Makeup Exam Policy
A makeup exam is given only under the most unusual circumstances with clear supporting document, such as hospital excuses. (We cannot accept a note from a hospital/clinic simply saying "so and so came to visit the clinic".) Things should have been scheduled to avoid conflict, e.g. job interviews, cannot be used as excuses for missing an exam.
Grades Dispute
If anyone finds the grading of a piece of course work to be questionable,
the issue must be brought to the attention of the TAs as soon as
possible
through email, i.e. within the first week from the day the graded
work
is returned to the student. This will ensure that the graders still have
clear memory of the entire context in which the grade was assigned.
Final Exam and PhD Qualifying Exam
The final exam will be comprehensive and will be a part of the qualifying exam.
The qualifying exam may have a second part that includes additional questions.
Since the final exam constitutes only a part of the course work,
it is possible that a student may get a A grade for the course
but fails the qualifying exam or, reversely, may pass the qualifying exam
but receives a below-A grade for the course.
Fall 2014
Days: Tuesday Thursday 3:00-4:15 pm
Credit Hours: 3
Instructor: Zhiyuan Li (LWSN 3154H) 765-494-7822
zhiyuanli@purdue.edu
TA(s): Praveen Kumar Gurumurthy
Office Hours : M - 10-11am ; Th - 1.15-2.15pm
HAAS 266 #8
praveen@purdue.edu
Nithya Raghavan
nraghava@purdue.edu
Office hours: See staff info on Piazza
Instructor contact hours for on-line students: TuTh 4:15-5:15 on Skype
(additional skype hours by appointment)
Textbook :
Compilers: Principles, Techniques, and Tools (Second Edition) A Aho & M. Lam & Sethi & Ullman Addison-Wesley 978-032-148681-3
Course Work:
Homework Assignments (20%)
Midterm (20%)
Final exam (30%)
Projects (30%)
Midterm date/time/place:
October 16th (Thursday), 3:00-4:15pm in the class room.
(Off-campus students follow the instruction from the distance-learning staff.)
NOTE: No make-up exam will be given, except for extreme difficulty such as illness certified by Purdue's medical facility.
Final Exam date/place:
(Please confirm with Purdue's schedule)
Projects:
There will be two projects based on the GNU GCC compiler framework:
Project 1 -- Regenerate C program from the internal representation (AST). This is a warm up project to get familiar with the GCC internal representation.
Project 2 -- Data flow analysis and optimization.
Learning Objective:
This course presents an overview of the principles and techniques in modern compilers, which gives students a deeper understanding of the syntactic rules and the functionality of modern programming languages, as well as the use of the compiler for enhancing program quality. The course also gives the students the opportunity to practice the implementation of certain key components in the compiler front-end and back-end.
Course Contents:
The course introduces the theoretical foundation for both the front end and the
backend of the compiler. For front end, finite automata, regular expression,
context free grammars and parsing state computation form the theoretical base.
For the back end, the most important theories concern the analysis of
program's control and data flow, control and data dependences, and the
concept of parallelism and locality analysis. The course also has a heavy
emphasis on experimentation, using a state of the art compiler environment to
implement both front-end and back-end techniques.
Topics Covered:
The first part of the course will be an overview of the "front end" of the compiler
and basic mechanism for code generation , including the following components:
Lexical analysis, examples of context free grammars, top-down parsing,
bottom-up parsing, abstract syntax tree, basic type checking, symbol
tables,intermediate code format and generation, machine code generation,
garbage collection, code generation for programs written in object-oriented
languages. The second part of the course gives more in depth coverage of the
fundamental program analysis techniques commonly used by compilers and
software engineering tools, which include, but not limited to, the following: Control flow and control dependence, data flow and data dependence analysis,
interprocedural analysis, pointer analysis, how such analyses are applied to
program transformations for better performance and to enhancement of software reliability.
Prerequisites:
A bachelor degree in computer science or an equivalent field. Solid
understanding of syntax and semantics of high level programming languages,
computer organization, data structures and combinatorial algorithms. Strong skill in C programming, especially in dealing with dynamic data structures such as lists and graphs. Familiarity with instruction-level processor architecture.
Grades Posting:
To meet Purdue's student privacy regulation requirement, all grades are stored on
http://www.itap.purdue.edu/learning/tools/blackboard/index.cfm
Academic Integrity Policy
Unless specified otherwise explicitly in the specific assignment/project handout, all assignments and projects must be completed by each student independently. Copying, either electronically or manually, from others' work (from Purdue students or external sources such as the internet) is a violation of the policy. Letting a student copy one's work is also a violation. Depending on the degree of severity of the violation, the first offense will receive a penalty of either a zero point given to the specific assignment or an automatic down-grade of the final letter grade. The second offense will result in a failing letter grade for the course and a report to the university.
Late Work Policy:
Each student is given four "late days" through the entire semester for possible late turn-in of a project. Each use will be whole days, not a fraction such as 1/2 day. The TA will keep a record on the grade book on how many "late days" a student has used.
No other late turn-in of projects will be accepted. Late work for written home works is not accepted. Therefore if a student has a travel scheduled, the homework should be turned in before the travel
Makeup Exam Policy
A makeup exam is given only under the most unusual circumstances with clear supporting document, such as hospital excuses. (We cannot accept a note from a hospital/clinic simply saying "so and so came to visit the clinic".) Things should have been scheduled to avoid conflict, e.g. job interviews, cannot be used as excuses for missing an exam.
Grades Dispute
If anyone finds the grading of a piece of course work to be questionable,
the issue must be brought to the attention of the TAs as soon as
possible
through email, i.e. within the first week from the day the graded
work
is returned to the student. This will ensure that the graders still have
clear memory of the entire context in which the grade was assigned.
Final Exam and PhD Qualifying Exam
The final exam will be comprehensive and will be a part of the qualifying exam.
The qualifying exam may have a second part that includes additional questions.
Since the final exam constitutes only a part of the course work,
it is possible that a student may get a A grade for the course
but fails the qualifying exam or, reversely, may pass the qualifying exam
but receives a below-A grade for the course.
General Information
No information, yet. Stay tuned!
Name | Office Hours | |
---|---|---|
Zhiyuan Li | When? Where? | |
Praveen Kumar Gurumurthy | When? Where? | |
Nithya Raghavan | When? Where? |
Homework
Homework
Due Date
Lecture Notes
Lecture Notes
Lecture Date
Nov 18, 2014
Dec 9, 2014
Dec 11, 2014
Dec 9, 2014
Dec 4, 2014
Dec 4, 2014
Dec 2, 2014
Dec 2, 2014
Nov 25, 2014
Nov 18, 2014
Nov 4, 2014
Oct 30, 2014
Oct 28, 2014
Oct 28, 2014
Oct 23, 2014
Oct 23, 2014
Oct 23, 2014
Oct 23, 2014
Oct 9, 2014
Oct 7, 2014
Oct 2, 2014
Oct 2, 2014
Oct 2, 2014
Sep 25, 2014
Sep 25, 2014
Sep 23, 2014
Sep 23, 2014
Sep 18, 2014
Sep 18, 2014
Sep 16, 2014
Sep 11, 2014
Sep 9, 2014
Sep 9, 2014
Sep 4, 2014
Sep 4, 2014
Sep 4, 2014
Sep 2, 2014
Sep 2, 2014
Aug 26, 2014