LMU ☀️ CMSI 488
Syllabus • Spring, 2020
Ray Toal
Doolan 110
Tuesdays and Thursdays
2:40 p.m. – 4:10 p.m.
Doolan 222
4 semester hours

Learning Outcomes

Students will:


Fluency in a high-level programming language such as JavaScript, Python, or Java. Courses in Programming Languages and Systems Programming are absolutely required; courses in Computer Science Theory and Computer Architecture are extremely helpful.


Readings will be assigned from a variety of sources throughout the term. The primary textbook is Torben Ægidius Mogensen’s Basics of Compiler Design. There will be assigned readings from this book: do not skip them!

Many students would be well-served by also picking up a textbook that covers programming language implementation, such as the most recent editions of Sebesta or Scott, and perhaps a good, solid introduction to Node.js development. Suggestions include:

Additional papers and readings will be assigned throughout the course (including my own course notes, practice problems, and sample code). If you have projects or papers to work on, you’ll have to find some additional readings on your own. Make sure you take the time for effective self-study. Take advantage of classmates and friends; the computing industry is one of the most collaborative fields in which to work, and your course experience should reflect this.


In accordance with the LMU Credit Hour Policy, this 4-unit course will require 12 hours of work per week (including the time spent in lecture and lab).

Assignments and Grading

You’ll have several homework sets containing in-depth theoretical questions and non-trivial programming problems, and quizzes and a final exam with less difficult material. In this class you will write a complete compiler. You will have, as a starting point, an existing compiler provided by the instructor for a simple programming language. You may either extend the compiler or start from scratch. To keep you on track, the project will be turned in in pieces, specifically as part of the homework assignments for the semester. The assignments will also contain some theoretical problems for you to work out, too. You have to write a report documenting the architecture and design of the compiler; however, your writeup may appear on your wiki as opposed to a stodgy PDF. To help prepare you to meet industry expectations for college graduates, programming assignments will sometimes be required to be placed in version-controlled public repositories (most students tend to prefer GitHub). Exams will cover material from lectures not previously assigned for homework: don’t whine about this.

Occasionally, you may be permitted to work in groups of no more than two students; however, while only one solution set is turned in per group, both students are responsible for understanding all of its content and may be asked at any time for an oral explanation of any solution. Collaboration with other groups is fine but must be limited: you may share ideas and approaches but not solutions. You must acknowledge any help received. Academic dishonesty may result in expulsion; be certain your work meets the standards set forth in the LMU Honor Code.

Your final grade will be weighted as follows:

Homework sets, including project checkpoints
50 pts
20 pts
Final Exam
30 pts

Letter grades are figured according to the usual scale: 90% or more of the total points guarantees you an A, 80% a B, 70% a C, and so on. Note the word guarantee: 82 points will earn you at least a B-; you might still get an A if 82 is or is near the top score. The lower bounds ensure grades measure your achievement of the learning outcomes, and can never punish you because you did very well but on the low end of a class full of high-achievers.

Unless otherwise stated, homework is due at the beginning of class; late assignments are docked 30% per class. Missing class just to get an assignment done on time will not be tolerated; the only good excuses for missing class are excellent surf conditions, personal or family issues, sickness, conference attendance, job interviews, and personal emergencies. Skipping class just puts your fellow students at an advantage: we often spend class time going over things that will be “on the exam.”

Where assignments involve programming, the quality of your code, not just its correctness, will play a large part in determining your grade. Please refer to these resources and notes on clean code for information on expectations of code quality. Appearance of the grading policy in this syllabus constitutes fair warning of the consequences of poorly written code.

Important Dates

2020-02-07 (Friday)Homework 1 Due
2020-02-28 (Friday)Midterm deficiency grades due
2020-03-07 (Saturday)Homework 2 Due
2020-03-10 (Tuesday)No class (Spring Break Tuesday)
2020-03-12 (Thursday)No class (Spring Break Thursday)
2020-03-20 (Friday)Last day to drop
2020-03-31 (Tuesday)No class (Chavez Day)
2020-04-09 (Thursday)No class (Easter Break)
2020-04-14 (Tuesday)Homework 3 Due
2020-04-16 (Thursday)Midterm
2020-04-28 (Tuesday)Homework 4 Due
2020-05-01 (Friday)Homework 5 Due
2020-05-05 (Tuesday)Final Exam

Student Rights and Responsibilities

You have the right to:

In return, you are expected to:


Additional Information

Tentative Nature of the Syllabus. If necessary, this syllabus and its contents are subject to revision; students are responsible for any changes or modifications announced or distributed in class or posted online.

Course Evaluation. Student feedback on this course provides valuable information for continued improvement. All students are expected to fairly and thoughtfully complete a course evaluation for this course. This semester, all course evaluations for the Seaver College of Science and Engineering will be administered online through the Blue™ evaluation system. You will receive an e-mail notification at your Lion e-mail address when the evaluation form is available. You may also access the evaluation form on Brightspace during the evaluation period. A few minutes of class time will be reserved for you to complete a course evaluation near the end of the semester. Please bring a laptop, smart phone, tablet or other mobile device to class on this date so that you can access the online evaluation platform.

Academic Honesty. Academic dishonesty will be treated as an extremely serious matter with severe consequences that can range from receiving no credit for an assignment or test to failing the class, to expulsion. It is never permissible to turn in any work not been authored by you without properly acknowledging the source. It is your responsibility to make sure that your work meets the standard of academic honesty set forth in the “LMU Honor Code and Process” which appears in the LMU Bulletin.

Special Accommodations. Students with special needs who require reasonable modifications, special assistance, or accommodations in this course should promptly direct their request to the Disability Support Services (DSS) Office. Any student who currently has a documented disability (ADHD, Autism Spectrum Disorder, Learning, Physical, or Psychiatric) needing academic accommodations should contact the DSS Office in Daum Hall, as early in the semester as possible. All discussions will remain confidential. Please visit LMU DSS for additional information.

Wellness. Please familiarize yourself with, and make use, of the resources at Lion Wellness as needed.

Reporting Requirements of Sexual or Interpersonal Misconduct. As responsible employees, faculty are required to report any case of suspected sexual or interpersonal misconduct and cannot protect student confidentiality. For information about confidential counseling on campus and for general information about consensual relationships, sexual harassment, and sexual assault, please visit LMU Cares.

Emergency Preparedness. To report an emergency or suspicious activity, phone the LMU Department of Public Safety (x222 or 310-338-2893) or at the nearest emergency call box. In the event of an evacuation, follow the evacuation signage throughout the building to the designated safe refuge area where you will receive further instruction from Public Safety or a Building Captain. For more safety information and preparedness tips, visit LMU DPS.