| 
      
        | Objectives |  
        | Students taking this course can expect to be able to: 
            
              Program in a functional programming language 
            
              Understand the evaluation of programs in a functional programming laguage
            
              Write a type checker / type inferencer given a formal
              type system
            
              Write a lexer, and a parser using recursive-descent
              parsing, or a parser-generator
            
              Write a syntax-directed translator from abstract syntax
              to intermediate representations
            
              Recognize and use major methods of specification of
              dynamic semantics
            
              Write a interpreter based on a formal operational
              semantics of the language
             |  
 
          
            | Class and Exam Attendance |  
            | 
                
                  Attendance in CS 421 is expected, and the student
                  accepts that work done in the class period or a
                  proctored examination may only be made up because of
                  a reason outlined in the
                  
                    student code
                  
                  in Section 1-501 d-f, or because of illness
                  immediately affecting the day of absence, with
                  notification being given to the instructor before
                  the class or examination, or as soon as possible afterwards if the
                  illness is serious enough to have reasonably
                  prevented earlier contact.
                
                  In-class quizzes may be rescheduled for two weeks
                  (14 days)
                  after the original date of the exam, if the absence
                  has been excused.
                  All other work missed as a result of an excused absence
                  must be made up with three (3) business days of the
                  missed class for in-class events unless a letter of
                  absence from the Student Assistance Center is
                  provided and indicates a reason for absence of a
                  greater period of time.  In the case of a prolonged
                  absence, as documented in an absence letter, work
                  must be made up within three (3) business days of
                  the end of documented need for absence.
                
                  When a quiz or exam is held in the CBTF, students
                  are required to register for the event before the
                  testing period opens.  Failure to do so will not
                  automatically grant the right to a make-up.
                
                  Reasons that do not count as a conflict, but as the
                  student's personal choice not requiring
                  consideration include
                  
                    
                      Travel, except as part of a University sponsored
                      event.
                    
                      Family visits, whether the student travels to
                      their family or their family travels to them.
                    
                      Appointments that could reasonably be
                      scheduled/rescheduled not to conflict with the
                      class period.
                    
                      Reasons listed in 1-501.d.6.(i)-(iii), and for
                      other reasons which do not satisfy the standard
                      of significant and compelling, as determined by
                      the course instructor.
                    
                  Requests for personnal accommodation may be
                  considered, but they will be handled in as uniform
                  manner as the circumstances allow.  Requests must be
                  made at least one week in advance of the date of the
                  desired absence, unless clearly not possible by the
                  circumstances of the reason for the request.
               |  
 
        
          | Contacting the Course Staff |  
          | 
              
                For email
                and 
                
                  Piazza
                
                please allow about 24 or
                so hours for a response, except on weekends (see
                below).
              
                The staff do not work on the weekends.  If you send
                or post something late Friday or over the weekend then you
                should not expect a reply before Monday.
              
                Never ever EVER call any
                staff at home.
               |  
 
          
            | Quiz and Exam Policies |  | 
              
                This course uses the Grainger College of Engineering’s
                Computer-Based Testing Facility for its Midterm exams.
              
                The quizzes and Final will be in PraireLearn through
                PrairieTest in class using the student's computer.
              
                The policies of the CBTF are the policies of this
                course, and academic integrity infractions related to
                the CBTF are infractions in this course.  This
                includes examinations given in the CBTF and those
                given in other setting such as the classroom.
              
                If you have accommodations identified by the
                
                  Division of Rehabilitation-Education Services (DRES)
                  (http://www.disability.illinois.edu/)
                
                for exams, please submit your Letter of Accommodations
                (LOA) through the CBTF website
                (
                  https://cbtf.illinois.edu/students/dres
                )
                as  soon as possible.  It can take up to five days for
                your LOA to be processed and if you make a reservation
                before your LOA has been processed, your reservation
                will not include your testing accommodations and you
                will be required to reschedule. This must be done each
                semester you use the CBTF.
              
                If you have any issue during an exam, inform the
                proctor immediately. Work with the proctor to resolve
                the issue at the time before logging off. If you do
                not inform a proctor of a problem during the test then
                you forfeit all rights to addressing the problem you
                experienced during your exam.
              
                Take  the CBTF Orientation
                (
                  https://go.illinois.edu/student-orientation
                )
                (10 minutes) and review all instructions on the CBTF
                website
                (
                  https://cbtf.illinois.edu/students
                )
                before your first exam.
               |  
 
          
            | Doing and Submitting Coding
            Questions on Assignments, Quizzes
            and Exams |  
            | 
                
                  
                    All work submitted for credit this semester is
                    submitted through PrairieLearn.  Please go to
                    
                      prairielearn.com
                    
                    and enroll in CS 421, if you have not already done
                    so.
                   
                    This semester, there are two kinds of assignments in
                    this course: machine problems (MPs), and web
                    assignments (WAs).
                    Six of the MPs will be submitted for credit in
                    their entirety in  PrairieLearn as MPs.  On the other five, 
                    credit will be received by taking an in-class quiz on
                    them instead. The quiz will be a selection of
                    problems from the given MP.
                   
                    The questions on the MPs are submitted as text
                    files, one for each problem, with the file usually
                    named after the code being implemented. WAs are
                    calculational exercises, also submitted in
                    PrairieLearn.  Both types of questions may appear
                    on Midterms and Final.
                   
                    For each problem in an MP or coding problem on an
                    examination, you will be given in PrairieLearn a
                    separate VSCode window, containing a directory
                    (listed to the left), an editor (VSCode) with a
                    window for opening the file for you to complete
                    with the answer to the problem.  That file
                    typically will already contain a bit of starter
                    code sufficient for you to begin testing your
                    work.  VSCode also has the ability for you to
                    start a terminal window, which will open placing
                    you in a directory (as listed on the left) with
                    all the files you need to complete and test the
                    assignment, and with full access to the compiler
                    for OCaml, the programming language we will be
                    using this semester.
                  
                  
                    Before submitting a coding question on a
                    examination or an MP assignment,
                    you MUST make sure that your MP
                    
                      compiles with the student grading script
                    
                    supplied with the assignment.  You can do this by
                    typing makein the terminal window
                    and making sure that your are given a grade report
                    with a list of tests run and whether they were
                    passed, with the points earned for the student
                    test suite.
                    
                      If your question fails to compile with the
                      student grading script, your question submission
                      will receive NO CREDIT.  There will be no
                      partial credit for coding questions that fail to
                      compile.
                  
                    You may do multiple commits of either the MPs or
                    the WAs. Your best score will be your final score.
                    Work submitted before the late deadline will not
                    be subject to the late penalty, but work submitted
                    after will.
                   
                    Questions on quizzes and exams typically will only
                    be allowed one submission. However, for coding
                    questions, you will still be given the full VSCode
                    environment to help you develop your answer.  You
                    may build and run the student grader as many times
                    as you wish.
                   |  
 
  
    | Extensions |  
    | 
      
        
          Each MP/WA will normally have an automatic 48-hour extension
          with a penalty on that MP/WA that it is capped at 80% the
          total value of the assignment.  If we cannot give such an
          extension for a particular MP/WA, for example due to
          scheduling constraints, we will announce that when the MP/WA
          is handed out.
         
          During the automatic extension, staff is not obliged
          to answer questions for that MP/WA.  You are on your own.
         
          Extensions without a point penalty for the first 48 hours
          and any extension beyond the 48 hours will only be granted
          under very unusual circumstances such as a medical or family
          emergency.  A signed note from a responsible party, or
          similar evidence, will be required.  If you do need such an
          extension for some legitimate reason, do your best to let us
          know as soon as possible, preferably before the normal MP/WA
          deadline.
         |  
 
  
    | Regrade Policy |  
    | 
        All grading is done automatically in PrairieLearn via
        algorithms that are fairly generic and in no way specialized
        to your code.  A regrade for you will likely mean a regrade
        for the entire class.  Requesting a regrade requires an
        explanation of why you believe your answer was incorrectly
        graded.
       
        In order to have your regrade considered you must provide the following:
       
         your netid;
          what assignment or exam question was graded incorrectly;
          and
        
          what evidence you have that your answer was incorrectly
          graded.
         
        You must also
        
          submit your regrade request for a particular assignment
          within one week of receiving grades for that assignment
        .
        It must be submitted directly to the course instructor,
        not to the TAs.  Late regrade requests will not be
        accepted or read.
       
        Good reasons to ask for a regrade:
         
          
            The grading was inconsistent with the description of how
            to do the problem given in class.  Details need to be
            provided.
          
            The grading was inconsistent with the problem
            statement.  You must indicate what you believe the
            inconsistency to be.
           
        Bad reasons to ask for a regrade:
         
          
            Part of your answer "matched" the answer given in the solution.
            A partially correct answer is still wrong.
            
              "The difference between an
              almost right word and a right word is the difference between a
              lightning bug and lightning."  -- Mark Twain
            
            You wrote the right answer in VSCode.  The answer
            submitted is the answer that counts, not work done in VSCode,
            
            You expended a lot of effort answering the problem.  We
            are measuring mastery, not effort.
           You wrote something down.
         |  
  
 
  
    | Collaboration |  
    | 
        You are allowed to collaborate on the machine problems (MPs) and
        the web assignments (WAs) of this
        course, in order to figure out how to solve the problem, resolve things
        you don't understand, and help each other track down errors or bugs.
        Nevertheless, you must each
        write and test your code separately
        and submit your own solution.
        Similarly, you must write up your own WA separately from others.
       
      If your collaboration extended beyond understanding for what the
      problem was asking, then you should note on your assignment with whom
      you collaborated.  As always, you are subject to
      the rules for plagiarism.  Whether you pass
      this course or not will depend heavily on whether you pass the exams -- and
      those are non-collaborative.
       
      We allow you to collaborate for several reasons:
       
         substantial research done indicates that students learn
        more when they are allowed to work together;
         our own ability to respond to student questions is increased
        because your peers are able to give help.
         
      However, you have to collaborate intelligently in order to get
      the most out of it.  If you ask a friend to describe the
      solution completely to you and then write it down, you will get
      the credit but you'll fail the exam because you never learned
      the methods/techniques/concepts.
                 
                  
                    If you verbatim copy, or copy with name changes, from a friend's
                    solution or other source, wholly or substantially, if you
                    cite, this is still violation of course policy and you will
                    receive a zero on the assignment if it is determined such
                    copying took place.
                  
                    If you verbatim copy, or copy with only name
                    changes, from a friend's solution or other source,
                    wholly or substantially, if you did not cite, or
                    did not cite truthfully, that will be considered
                    cheating.
                  
                    If you work as a group, each writing part and sharing it
                    with the others, that is also considered cheating, unless your
                    cite all members from whom you copied.  Again, it will be a
                    course violation of course policy if you copy verbatim or with
                    only name changes, even if you cite and you will risk losing
                    all credit for the parts so copied.
                  
                    If you copied your answer from a source on the internet,
                    that is considered cheating, unless you both cite your source,
                    and clearly indicate what was copied.  If you cite, but copy
                    verbatim or with only name changes, again that is a course
                    policy violation, and if determined, will result in the loss
                    of credit for those parts so copied.
                   
                The penalties for being discovered cheating are described in the
                next section, below.  If you offer your solution for others to
                copy, you should protect yourself from being accused of
                cheating by reporting this as well.  Then, if some of those to
                whom you have lent your work fail to cite you, you will be
                protected from cheating accusations (unless they also claim
                they lent the same problem to you).
               
                
                  If you copy your solutions from friends or other sources, you
                  must cite your source, and the degree and extent of copying.
                  Also, you must do your writing without direct copying.
                
               
                Think of MPs and web assignments as being part of the
                practice for the exam.  Many of the problems will be used as a
                basis for the exam problems themselves.  In fact, when it comes
                time to study, we will likely advise you to redo your MPs and
                written assignments.
               |  
 
  
    | Policy on Cheating |  
    | 
        We will be looking for cheating on both assignments
        and exams.  The penalty for being caught cheating a
        first time -- either sharing your solution or
        copying anyone or anything else's solution on
        an exam, or copying anyone else's solution on an
        assignment without citation -- is that
        
          you will receive a negative score for the unit
          cheated on equal to the value of the unit
        .
        An assignment (MP or web assignment) is one unit.  A
        numbered problem on a test, including all its parts,
        is one unit.  The penalty if you are caught cheating
        a second time, after being informed of the first
        time, is a grade of F for the class.  You should
        take all reasonable precautions to prevent others
        from cheating and report any suspected cheating.
       
        All policies of the CBTF are the policies of this course, and
        academic integrity infractions related to the CBTF are
        infractions in this course.  In particular
         
          
            Utilizing a cellphone, smartwatch, or any other electronic
            device during an examination.
          
            Having available during the exam or bringing into the CBTF
            external papers, index cards, scratch paper, Help Sheets,
            or any materials containing information related to the
            exam.
          
            Accessing files, apps or internet resources other than a
            browser and PrairieLearn through PrairieTest during an
            examination.
          
            Exiting the laboratory premises while in possession of used or unused
            scratch paper supplied by the CBTF.
          
            Initiating the examination before receiving authorization
            from the proctor.
          
            Continuing to work on the exam even after the designated
            end time has been announced.
          
            Engaging in any other activities that contravene the
            guidelines outlined for Academic Integrity.
           |  
 
  
    | Grading |  
    | 
        All grading is done automatically in PrairieLearn, and you will
        receive your results for each problem when you press the Save
          & Grade button.  You can see the scores of all past
        assessments in the PrairieLearn gradebook.
        
        It should be noted, however, that the value for WAs and for MPs submitted
        as MPs, not quizzes, is
        the number of points assigned; they are not all valued
        equally.  The score tells you the percentage of the points you
        received, but you will need to refer back to the assignment
        itself to view how many points it was worth.  There seems to
        be no way to make PrairieLearn report points rather than
        scores in the gradebrook.  The contribution of the MPs and WAs
        is the number points earned cumulatively for all MPs and WAs
        divided by the total points possible, times the percentage of
        the course the MPs and WAs combined are worth (10% for 3
        credit students, and 7.5% for 4 credit students).
       
        Each Midterm will have 90 points and the Final will
        have 210 points.  (All exam points and equal to each
        other, as all MP and WA points are equal to each
        other, but MP and WA points are distinct from exam
        points.)
       
        Below is a table giving the percentage each major
        category of work in the class contributes to the final
        grade. 
       
          | Grading Breakdown | 
|---|
 
            | Work | Weight (3cr) | Weight (4cr) |  
            | Machine Problems, and Web Assignments (combined) | 10% | 7.5% |  | Quizzes | 10% | 7.5% |  | Midterm 1 | 15% | 11.25% |  | Midterm 2 | 15% | 11.25% |  | Midterm 3 | 15% | 11.25% |  | Final Exam | 35% | 26.25% |  | Project | NA | 25% |  
 
 
          | Grading Scale | 
|---|
 
            | Grade | If your overall score is at least
 |  | A+ | 100% |  | A | 93% |  | A- | 90% |  | B+ | 87% |  | B | 83% |  | B- | 80% |  | C+ | 77% |  | C | 73% |  | C- | 70% |  | D+ | 67% |  | D | 63% |  | D- | 60% |  |  
 
  
    | Mental Health Assisance |  
    | Significant stress, mood changes, excessive worry,
      substance/alcohol misuse or interferences in eating or sleep can
      have an impact on academic performance, social development, and
      emotional wellbeing. The University of Illinois offers a variety
      of confidential services including individual and group
      counseling, crisis intervention, psychiatric services, and
      specialized screenings which are covered through the Student
      Health Fee. If you or someone you know experiences any of the
      above mental health concerns, it is strongly encouraged to
      contact or visit any of the University’s resources provided
      below. Getting help is a smart and courageous thing to do for
      yourself and for those who care about you. 
        If you are in immediate danger, call 911.Counseling Center (217) 333-3704McKinley Health Center (217) 333-2700National Suicide Prevention Lifeline (800) 273-8255Rosecrance Crisis Line (217) 359-4141 (available 24/7, 365
          days a year) |  
 
  
    | Students with Disabilities |  
    | 
        To obtain disability-related academic adjustments and/or auxiliary
        aids, students with disabilities must contact the course instructor as
        soon as possible and provide the instructor with a Letter of Academic
        Accommodations from Disability Resources and Educational Services
        (DRES). To ensure that disability-related concerns are properly
        addressed from the beginning, students with disabilities who require
        assistance to participate in this class should apply for services with
        DRES and see the instructor as soon as possible. If you need
        accommodations for any sort of disability, please speak to me after
        class, or make an appointment to see me or see me during my office
        hours. DRES provides students with academic accommodations, access,
        and support services. To contact DRES, you may visit 1207 S. Oak St.,
        Champaign, call 217-333-1970, e-mail
        
          disability@illinois.edu
        
        or visit the DRES website at
        
          http://www.disability.illinois.edu/.
        
        Here is the direct link to apply for services at DRES,
        
          https://www.disability.illinois.edu/applying-services.
        
       |  
 
   | Religious Observances |  
    | Illinois law requires the University to reasonably accommodate its
      students' religious beliefs, observances, and practices in regard to
      admissions, class attendance, and the scheduling of examinations and
      work requirements. Students should complete the
      
        Request for Accommodation for Religious Observances
      
      form should any instructors
      require an absence letter in order to manage the absence. In order to
      best facilitate planning and communication between students and
      faculty, students should make requests for absence letters as early as
      possible in the semester in which the request applies. |  
  
    | Textbooks |  
    | There is no required textbook for this course. However, the
      following textbooks are recommended reading: (see also
      the resources page) 
	 
	The Objective Caml system, release 3.12
	Documentation and user's manual by Xavier Leroy
        (with Damien Doligez, Jacques Garrigue, Didier Rémy and Jérôme
        Vouillon), from the official INRIA website for OCAML.
         an
        online book
        about OCaml from CalTech.
        Modern
	Compiler Implementation in ML by Andrew Appel.
	Published by Cambridge University Press.  ISBN 0-521-60764-7
	(paperback).
         Compilers: Principles, Techniques, and Tools,
        also known as "The Dragon Book"; by Aho, Sethi, and Ullman.
        Published by Addison-Wesley. ISBN: 0-201-10088-6.
        Essentials of
        Programming Languages, 2nd Edition; by Friedman, Wand,
        and Haynes.  Published by MIT Press 2001. ISBN: 0-262-06217-8.
         Advanced Programming Language Design, by Raphael
	A. Finkel. Addison Wesley Publishing Company, 1996.
          Programming Language Pragmatics, by Michael
	L. Scott.  Morgan Kaufman Publishers, 2000.
          Concepts, Techniques, and Models of Computer
	Programming  Peter Van Roy and Seif Haridi, MIT Press,
	2004 ISBN 0-262-22069-5
         |  |  |