LMU | CMSI 386
Syllabus • Fall, 2018
Ray Toal
Doolan 110
Tuesdays and Thursdays
4:20 p.m. to 5:35 p.m.
Doolan 219
3 semester hours

Learning Outcomes

Students will:


Programming proficiency in one but preferably two high-level languages such as JavaScript, Ruby, Python, Java, C++, or Clojure. Previous courses in Data Structures and Algorithms are essential.


The majority of the course material will come from:

Another book that looks at programming language concepts is:

Many students benefit a great deal from language-specific books. However, keep in mind that programming languages evolve much more quickly than books are written about them. Here are a few suggestions for your reading pleasure; just make sure you supplement your study with online sources:

The languages we will be covering most heavily in this course will be (1) JavaScript, (2) Ruby or Python or Julia, (3) Java, (4) Scala or Haskell or Clojure or ML or OCaml, (5) C and C++, and (6) Rust or Go or Swift. Moderate attention will be focused on CoffeeScript, Lua, Ada, C#, and Erlang. A smaller amount of attention will be spent on Fortran, Lisp, Scheme, SQL, Smalltalk, Lua, K, Chapel, D, Prolog, a bunch of esoteric languages, as well as the languages from the first group of alternatives that didn’t make the cut. Note that this list includes old as well as modern languages in order to cover the evolution of ideas in the field of programming languages.

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 3-unit course will require 9 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. 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
45 pts
Quiz 1
12 pts
Quiz 2
16 pts
Final Exam
27 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.

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, family problems, sickness, 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 huge part in determining your grade. I will not hesitate to assign D’s or F’s to working programs which are poorly structured, poorly commented, have poor identifier names and abbreviations, contain inappropriate hard-coded values, or are not easily maintainable for any reason. Appearance of the grading policy in this syllabus constitutes fair warning of the consequences of poorly written code.

Important Dates

2018-09-11 (Tuesday)Homework 1 Due
2018-10-11 (Thursday)Midterm deficiency grades due
2018-10-16 (Tuesday)Homework 2 Due
2018-10-23 (Tuesday)Practice Midterm
2018-11-02 (Friday)Last day to drop
2018-11-06 (Tuesday)Homework 3 Due
2018-11-20 (Tuesday)Homework 4 Due
2018-11-22 (Thursday)Thanksgiving (no class)
2018-12-08 (Saturday)Homework 5 Due
2018-12-11 (Tuesday)Final Exam

Student Rights and Responsibilities

You have the right to:

In return, you are expected to:


We'll cover most of the following topics in the order listed:

University Information

Academic Honesty. Academic dishonesty will be treated as an extremely serious matter with severe consequences that can range from receiving no credit for assignments/tests, failing the class, to expulsion. It is never permissible to turn in any work that has not been authored by the student, such as work that has been copied from another student or copied from a source (including Internet) 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 (Daum Hall 2nd floor, 310-338-4216) as early in the semester as possible. All discussions will remain confidential. Please visit LMU DSS for 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 on LMU’s course management system MYLMUConnect.

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.