Viewing: CSC 512 / CSC 412 : Compiler Construction

Last approved: Fri, 07 Sep 2018 11:37:42 GMT

Last edit: Fri, 07 Sep 2018 11:37:36 GMT

Changes proposed by: xshen5
Catalog Pages referencing this course
Change Type
CSC (Computer Science)
Dual-Level Course
Cross-listed Course
Compiler Construction
Compiler Construct
College of Engineering
Computer Science (14CSC)
Computer Science.
Term Offering
Fall Only
Offered Every Year
Fall 2018
Previously taught as Special Topics?
Course Delivery
Face-to-Face (On Campus)

Grading Method
Graded with S/U option
Contact Hours
(Per Week)
Component TypeContact Hours
Course Attribute(s)

If your course includes any of the following competencies, check all that apply.
University Competencies

Course Is Repeatable for Credit
Xipeng Shen
Associate Professor

Open when course_delivery = campus OR course_delivery = blended OR course_delivery = flip
Enrollment ComponentPer SemesterPer SectionMultiple Sections?Comments
Lecture65N/ANoThe course CSC412 will be an advanced undergraduate course. As there will be about 50 CSC512 students in the class, I'd like to cap the size of CSC412 to 15.
Open when course_delivery = distance OR course_delivery = online OR course_delivery = remote
Prerequisites: CSC 316 and 333
Prerequisites: Graduate standing and CSC 316 and CSC 333 or equivalent classes.
Is the course required or an elective for a Curriculum?
SIS Program CodeProgram TitleRequired or Elective?
14CSCBSComputer Science (BS)Elective
The course will concentrate on the theory and practice of compiler-writing. Topics to be covered will include techniques for parsing, code generation, and optimization. Furthermore, the theoretical underpinnings of compilers such as LR parsing will be covered. Finally, the students will be exposed to compiler construction tools, and will obtain hands-on experience in building a compiler for a small programming language. Besides the listed prerequisite courses, other helpful courses include CSC 253, CSC 224, CSC 234, and MA 121.

The course has been offered as a graduate course in the department of

Computer Science. This proposed change is to make it a dual-level

course. The main motivation is to fill an important vacancy in the

undergraduate curriculum of Computer Science.

According to the suggested curriculum guideline of the Association for

Computing Machinery (ACM), knowledge of computing systems shall be an

essential component of computer science curricula. Compiler

Construction is part of the core aspects of computing

systems. However, due to the shortage of faculty in the Department of

Computer Science (CSC), there has not been such a course offered to

the undergraduate students. Providing such an option has been broadly

considered important and worthwhile by the faculty in the CSC

department. It was highlighted in the recent department mini-retreat.

The proposed change, making the course dual-level, will effectively

solve the problem.


Is this a GEP Course?
GEP Categories

Humanities Open when gep_category = HUM
Each course in the Humanities category of the General Education Program will provide instruction and guidance that help students to:






Mathematical Sciences Open when gep_category = MATH
Each course in the Mathematial Sciences category of the General Education Program will provide instruction and guidance that help students to:




Natural Sciences Open when gep_category = NATSCI
Each course in the Natural Sciences category of the General Education Program will provide instruction and guidance that help students to:




Social Sciences Open when gep_category = SOCSCI
Each course in the Social Sciences category of the General Education Program will provide instruction and guidance that help students to:






Interdisciplinary Perspectives Open when gep_category = INTERDISC
Each course in the Interdisciplinary Perspectives category of the General Education Program will provide instruction and guidance that help students to:








Visual & Performing Arts Open when gep_category = VPA
Each course in the Visual and Performing Arts category of the General Education Program will provide instruction and guidance that help students to:






Health and Exercise Studies Open when gep_category = HES
Each course in the Health and Exercise Studies category of the General Education Program will provide instruction and guidance that help students to:








Global Knowledge Open when gep_category = GLOBAL
Each course in the Global Knowledge category of the General Education Program will provide instruction and guidance that help students to achieve objective #1 plus at least one of objectives 2, 3, and 4:


Please complete at least 1 of the following student objectives.






US Diversity Open when gep_category = USDIV
Each course in the US Diversity category of the General Education Program will provide instruction and guidance that help students to achieve at least 2 of the following objectives:
Please complete at least 2 of the following student objectives.








Requisites and Scheduling
a. If seats are restricted, describe the restrictions being applied.

b. Is this restriction listed in the course catalog description for the course?

List all course pre-requisites, co-requisites, and restrictive statements (ex: Jr standing; Chemistry majors only). If none, state none.

List any discipline specific background or skills that a student is expected to have prior to taking this course. If none, state none. (ex: ability to analyze historical text; prepare a lesson plan)

Additional Information
Complete the following 3 questions or attach a syllabus that includes this information. If a 400-level or dual level course, a syllabus is required.
Title and author of any required text or publications.

Major topics to be covered and required readings including laboratory and studio topics.

List any required field trips, out of class activities, and/or guest speakers.

The instructor will teach this course once per year. No extra resources are needed.

Mastering the theory and practice of compiler writing and important compiler construction techniques and principles, including parsing, code generation, flow analysis, run-time storage organization and optimization. Gaining the skills in writing compilers and using related tools.

Student Learning Outcomes

By the end of the course, students should be able to

  • design and implement algorithms for scanners, parsers, semantic analyzers, and code generators;

  • critique different implementation choices and analysis approaches;

  • understand the fundamental theory on regular expression, DFA, NFA, context-free and context-sensitive grammars;

  • reiterate basic algorithms for register allocation, instruction scheduling, instruction selection;

  • oexplain several common techniques used in code optimizations and the major challenges in static code optimizations.

Evaluation MethodWeighting/Points for EachDetails
Written Assignment30%There will be about 4 written assignments.
Midterm30%Closed-book exam.
Project40%Several programming projects on compiler construction. Individual projects.
TopicTime Devoted to Each TopicActivity
Introduction1 classIntroducing compiler construction.
scanner3 classesScanner theory and implementation.
parser5 classesParser theory and implementation.
context sensitive analysis1 classesTheory on context sensitive program analysis.
IR2 classIntermediate representations used in compilers.
Procedure2 classesHandling procedure abstraction in compiler.
Code shape3 classesStatement translation.
Code optimization4 classesSome basic techniques on code optimizations.
Backend4 classesInstruction selection, instruction scheduling, and register allocation.
The course will have different levels of requirements for the undergraduates (CSC412) and the graduates (CSC512), in terms of both the required degrees of proficiency and the set of homework. Specifically, the CSC412 students are not required to implement code generators, while the CSC512 students are required to do so. In addition, the CSC512 students are expected to be able to explain several basic program optimization techniques and challenges, while it is not required for the CSC412 students.

mlnosbis 12/19/2017:
1) Effective date should be Spring 2018 or later.
2) The "helpful courses" list in the prerequisite field should be moved to the end of the course description. Only required prerequisites can be coded in the catalog, but if you move that list to the end of the course description, then students will still be able to see the information.
3) The course description in the CIM form should match that on the syllabus.
4) Provide Student Learning Outcomes in list form rather than in the current paragraph form.
5) Syllabus notes:
- Instructor's office hours should not be TBD. "By appointment" is acceptable.
- Both listed textbooks are optional. Is there required course material?
- What are the written assignments worth 30% of the grade?
- You must include item #14 from the Graduate Course Syllabus Checklist, attached under Additional Documentation
6) Delete the syllabus for CSC 512 from 2016 that is attached under additional documentation. We only need to see your proposed syllabus for the dual-level course.

cohen 1/15/2018:
1. The course will be offered every fall. So under Instructional Resources, I would suggest removing the phrase “roughly once per year.”

ABGS Reviewer Comments 4/23/2018:
-The syllabus says, "The midterm exam will be an in­class, closedbook exam. There will be no makeup exam for midterm. If you miss the midterm, your grade will be soly based on the final exam you take. However, you should realize that the final exam will be comprehensive and significantly more difficult than the midterm exam. You need to email the instructor in advance with justifications to skip the scheduled midterm" However, a final exam is not listed as one of the graded components? What percent of the grade does the final exam determine?
-It is not clear what is expected of students enrolled in the graduate level course CSC 512 and how it is different from the expectations for CSC 412.
-The course schedule dates are inconsistent. Some list a single day, other 5 days, others 14 days between classes? The course scheduled should be updated to show topics that will be covered each of the 15-16 weeks of the semester. For example, In CIM it says scanner will span 3 weeks whereas the course schedule lists is as being covered 8/23-8/30
-Are there prerequisites for CSC 512? Grad standing?

ABGS Reviewer Comments 8/7/2018:
-The dual-level course offering is well justified and the course syllabus was updated accordingly to reflect dual-level. I have no concern for this course action.
rfillin (Thu, 07 May 2015 19:03:40 GMT): this is a test
bahler (Thu, 15 Oct 2015 17:19:43 GMT): Rollback: Needs the undergrad syllabus
rouskas (Thu, 19 Nov 2015 15:45:39 GMT): Rollback: Needs undergraduate syllabus.
rfillin (Wed, 04 May 2016 13:41:51 GMT): The Contact hours need to be corrected. (3.00 Hours per week) There needs to be a distinction between the graduate and undergraduate levels that is explicit and noticeable by comparing the syllabus of each level. The course outline is missing from the grad syllabus The SLOs need to be expanded, detailed and include action verbs. Will send an email with instructions.
rfillin (Wed, 04 May 2016 13:42:39 GMT): Rollback: need to make corrections as listed below
dwparish (Thu, 13 Apr 2017 16:24:45 GMT): Rollback: Changes as mentioned in the meeting.
xshen5 (Mon, 23 Apr 2018 21:17:35 GMT): Changes made to the syllabus: * In "Learning Outcomes", I added "(for CSC512)" into the first item to state the differences between the expected outcomes between CSC512 and CSC412. * I removed the sentences that mention "final exam" in row 1 of the Grade Components table. Clarifications for some other comments: * The CIM and the course schedule in the syllabus is consistent. Please note that in CIM, the unit is not "weeks" but "classes". The course meet twice a week. * The course schedule is based on the units of the class content. I prefer this way rather than listing the content of each week as the latter tends to break up a learning unit.
xshen5 (Mon, 23 Apr 2018 21:21:29 GMT): There is no special requirement for a student for selecting CSC512 besides the standard policy of Computer Science (regarding the grad standing and so on).
Key: 1370
Preview Bridge