CS440-002: Language Processors and Programming
Environments
(Fall 2024)
1 Course Basics
1.1 Meeting Time and Location:
- Monday/Wednesday 9-10:15am,
Innovation Hall 136
1.2 Instructor: Dr. Yutao Zhong
- Email: yzhong (at) gmu (dot) edu
1.3 Course Content
This course will cover the theoretical and implementation aspects of
language processing. Emphasis will be on the techniques and the
issues that arise in the design and construction of compilers. There
are several substantial programming assignments associated
with this course. Main topics of the course include:
- Compiler design
- Lexical analysis
- Syntax analysis - grammars, LL(1) parsers, LR(1) parsers
- Semantic processing
- Code generation
- Code optimization
1.4 Course Outcomes
At the end of this course, students should
- Be able to compare compiled and interpreted execution models,
outlining the relative merits of each.
- Be able to describe the phases of program translation from
source code to executable code and the files produced by these
phases.
- Be able to write regular expressions and finite state automata
for languages, be able to use tools to automatically generate
scanners.
- Understand the definition of grammars; be able to write
grammar for context-free languages; be able to manually write
recursive-descent parsers; be able to transform grammars and use
automatic tools to generate bottom-up parsers.
- Be able to construct and maintain symbol table; be able to
process declarations and scopes; understand the type system and
type checking.
- Be able to describe the storage system and explain the
implementation of high-level language features like function
calls.
- Be able to explain the major problems and solutions of code
generation; be able to implement code generator from
intermediate code.
- Be able to explain important optimization schemes; be able to
describe and apply data-flow analysis.
1.5 Prerequisites: C or better in CS310/CS330/CS367
Students are expected to be acquainted with formal models and
languages(CS330), computer systems and assembly languages(CS367),
and data structures(CS310). Students should have strong
programming skills with at least one language in C/C++/Java.
1.6 Textbook:
- Required - Compilers:
Principles, Techniques and Tools, Aho, Lam, Sethi,
and Ullman (aka Dragon book), 2/E, Addison-Wesley, August, 2006.
Errata Page.
- Recommended - lex
& yacc, Levine, Mason, and Brown, published by
O'Reilly, 2nd Edition, October 1992. Errata Page.
1.7 Other Useful Resources:
- Canvas: Course schedule, announcements, lecture
slides, assignments, and grades release.
- Piazza: Discussion forum. Follow the link on Canvas to
sign up.
- Gradescope: Quizzes. Link to Gradescope site will be
available from Canvas.
2 Grading
2.1 Assessment
Category
|
Percent
|
Coding projects
|
35%
|
Quizzes
|
10%
|
Participation
|
5%
|
Midterm
|
25%
|
Final exam
|
25%
|
The following cutoffs will be applied without
rounding:
- A+ (>= 97.0%) A (>= 91.0%) A– (>= 89.0%)
- B+ (>= 87.0%) B (>= 80.0%) B– (>= 78.0%)
- C+ (>= 76.0%) C (>= 70.0%) C– (>= 68.0%)
- D (>= 60.0%)
- F (< 60.0%)
2.2 Projects
- All projects must be done on an individual basis unless stated
otherwise.
- All project grades are normalized and each contributes to your
final grade evenly.
- Incorrect/broken submissions:
- Code that doesn't compile/run will likely get a very low
score. It specifically MUST compile/run on zeus.cec.gmu.edu(Zeus).
- Turning in the wrong files or corrupted files will likely
result in a zero.
-
If you turn in the wrong files, the ONLY way you MIGHT receive
credit is by showing your professor a backup where the
modified date on the files is outside of
your control. Modified dates on personal computers
and/or public computers are NEVER accepted as proof
of work. Backups which WILL ALWAYS be considered are: backup
copy on zeus; prior submissions to Gradescope/Canvas; or
emails to your Professor/GTA. Backups which MIGHT be accepted
include: emails from your GMU email to yourself, uploading to
certain backup services (such as OneDrive or a private GitHub
repo).
- Late Policy:
-
Projects can be turned in at most 48 hours late, no
exceptions.
- Submitting an assignment late incurs a 25% ceiling
penalty each day.
- For one day late without a token or two days late with
only one token, your max possible score will be a 75%.
- For two days late with no tokens, your max possible
score will be a 50%.
- Each student gets three "Emergency Day" tokens,
which are automatically used by late submissions to
avoid the late penalty. Up to two token can be applied
to each project.
- Unused emergency-tokens have no grade value at
the end of the semester.
- Canvas/Gradescope being unavailable is not an excuse for
turning in a late assignment; in the rare situation that the
website is somehow unavailable or giving the student an
error, the student MUST email their submissions to their GTA
before the deadline, otherwise it will be considered late.
- Catastrophic computer failure will not be cause for an
extension. Use a backup service such as OneDrive (or any
cloud service), emailing yourself, making multiple rounds of
submissions to Canvas/Gradescope, whatever it takes.
2.3 Quizzes
- There will be weekly online quizzes for most of the weeks.
- The lowest quiz grade will be dropped.
- Late Policy: no late
submission accepted for quizzes.
2.4 Exams
- Exams are closed book unless specified otherwise by
instructor. They will be entirely paper and pencil - no
computers, cell phones, calculators, or other such resources are
allowed.
- All students must have their GMU identification available on
testing days.
- Early or Late/Makeup Exams require exceptional circumstances
(as judged by the professor) and must be arranged in advance.
Vacation plans are not exceptional circumstances. You are
starting the course with knowledge of the schedule (see GMU's
Final Exam Calendar for the latest schedule, updated as weather
events require).
- If you miss an exam due to a university-accepted excused
absence (such as an illness or car accident the day and time of
the exam), you must notify your professor within 24 hours
of your absence to make arrangements for a makeup, and bring
approved documentation with you when you take the make-up exam.
Failure to follow either of these policies will result in a
zero. We may elect to allow the final exam to count the extra
amount to give you a sort of do-over for missed midterms; we
also reserve the right to give oral makeup exams in lieu of
written.
- Missing an exam due for any non-university-accepted reason
(such as not paying attention to when the exam is), will result
in a zero.
- Do not miss the Final Exam. This requires College Dean's
Approval to make-up.
2.5 Discussion board
- Students are encouraged to use the discussion board, Piazza,
to ask and answer questions.
- No sharing answers to homework assignments on the discussion
board.
- Under no circumstances should your code of assignments be
posted publicly to the discussion board. Students can post
questions and code privately, although the instructor reserves
the right to make any post public, so that other students can
see the responses.
2.6 Other
- Contested Grades: Contesting of grades on any/all
submissions must be requested within one week of receiving the
grade. No grade changes will be considered subsequent to that
deadline.
- There will be no make-up or extra-credit assignments at the
end of the semester; your grade should be a measure of your
semester-long progress.
- IN (Incomplete) policy as indicated in the catalog will be
strictly adhered to. You must provide the necessary back-up
documentation (e.g. medical certificate) for your application to
be considered favorably. In all circumstances, the written
request, with all the back up documentation, must be received
before the final exam week.
3 Policies
3.1 Honor Code
- All students are expected to abide by the GMU Honor Code. This policy is
rigorously enforced. Cheating will be prosecuted and result in
a notification of the Honor Committee as outlined in the GMU
Honor Code.
- The computer science department has an CS Honor Code Policies that you are
subject to particularly for our course. The document helps you
to understand how GMU honor code applies to programming and
CS, what constitutes cheating in the CS setting. It clarifies
some scenarios that are unique to our sorts of assignments.
Make sure you read and familiarize yourself with these rules.
- You are not allowed to use any code that are
not your own for the assignments.
- This includes code from Internet.
- This includes code from any other student (including past
students).
- Submitted work that is not your own is an Academic
Integrity violation and will be reported to the office of
Academic Integrity.
- You are not allowed to discuss any
implementation (code) or design decisions with any other
student.
- This includes prior students.
- Sharing your code / design with other students is an
Academic Integrity violation and will be reported to the
office of Academic Integrity. This includes includes posting
your code to a website, like Piazza or GitHub public
repository.
- Generative-AI tools, such as ChatGPT and Microsoft
CoPilot, should not be used in this course as an
assistant in projects, quizzes, or exams unless otherwise
specifically stated by the instructor.
- Use of such tools presents ethical and academic dishonesty
issues, especially if the work is presented as your own.
Again, submitted work that is not your own is an Academic
Integrity violation and will be reported to the office of
Academic Integrity.
- If you do use generative AI software, you will be
responsible for any incorrect, biased, or unethical
information that is submitted.
-
We take the honor code quite seriously. Any attempts at
copying or sharing code, algorithms, or other violations of
the honor code simply will not be tolerated. We use automated
software to flag suspicious cases, and then review them to
find the cases that must be submitted to the Office of
Academic Integrity. The penalty for cheating will always be
far worse than a zero grade, to ensure it's not worth taking
the chance.
Confirmed cases of cheating almost always translate into
course failure.
3.2 Privacy
- All course materials posted to Canvas or other course sites
are private; by federal law, any materials that identify
specific students (via their name, voice, or image) must not be
shared with anyone not enrolled in this class.
- Video recordings of class meetings that include audio or
visual information from other students are private and must not
be shared.
- Live Video Conference Meetings (e.g. Collaborate or Zoom)
that include audio or visual information from other students
must be viewed privately and not shared with others.
3.3 Non-discrimination and Inclusiveness
- We are committed to providing an educational environment free
from any discrimination on the basis of race, color, religion,
national origin, sex, disability, veteran status, sexual
orientation, gender identity, gender expression, age, marital
status, pregnancy status, or genetic information. If you
encounter any barriers to your inclusion, please contact the
professor.
You can also get assistance by contacting GMU's Office of
Diversity, Equity and Inclusion (703-993-8730; cde@gmu.edu).
- Gender identity and pronoun use: If you wish, please share
your name and gender pronouns with us and we will attempt use
them to address you in class and via email.
3.4 Sexual Harassment, Sexual Misconduct, and Interpersonal
Violence
- All faculty members are designated "Responsible Employees",
and are required to report all disclosures of sexual assault,
interpersonal violence, and stalking to Mason’s Title IX
Coordinator per university policy 1412. If you wish to speak
with someone confidentially, please contact the Student Support
and Advocacy Center (703-380-1434) or Counseling and
Psychological Services (703-993-2380). You may also seek
assistance from Mason’s Title IX Coordinator (703-993-8730;
titleix@gmu.edu).
4 Learning Disabilities
Students with a learning disability or other condition
(documented with GMU's Office of Disability Services) that may
impact academic performance should speak with the professor ASAP
to discuss appropriate accommodations.
5 Campus Resources