Summer Honors 2016
Build Your Own Programming Language
Syllabus and Information

Table of Contents

Table of Contents
General Information
Contact Your Instructor
Lecture, Exam, Office Hours
Standard text
Course Announcements
Classroom conduct
Course Description
Course Outline
Grading and Assignments
Late Homeworks
Start Homeworks Early
Expected Amount of Work
Grade Cutoffs
Blackboard
Academic Integrity
Special Needs
Disclosures Regarding Sexual Misconduct

General Information

Contact Your Instructor

Name: Steven Baker
Email: Steve.Baker@indstate.edu
Phone: 812-237-8776
Office: Root A-138D

Lecture, Exam, Office Hours

Lecture: M-F 8:30am - 12:00pm / 1:00pm-3:30pm in Root Hall A-017
Exam: N/A
Instructor Office Hours: 3:30pm - 5:00pm M-F

Standard text

Most information required for the course is available online or will be directly during lecture. Sources that can be used for the course include the following:

Course Announcements

Announcements regarding the course will be made both during class and via email to your email address. You should regularly check this email account or have it forwarded to an account that you check regularly.

Classroom conduct

You may not use cell phones, iPods/music players, etc. during class. You should be civil and respectful to both the instructor and your classmates, and you should arrive to class a few minutes before the scheduled lecture so you are ready for lecture to begin on time. You may use your computer during class if you are using it to follow along with the examples that are being discussed. You may not check email, Facebook, work on other courses, etc. during class.

Course Description

The description for this course is:

"Programming languages are the primary way programmers communicate instructions to a computer to get it to do things. In this course you will learn about the design and construction of programming languages with the aim of implementing one of your very own. By the end of the course each student should be familiar with concepts related to programming language design including Lexical Analysis, Formal Grammars, Parsing, and Expression evaluation. By implementing a language from the ground up, the student will have a more complete understanding of computer languages and programming."

Course Outline

Day 1 An introduction to Linux and how to log-in and use the development environment including using the editors and compilers, culminating in the creation of a 'Hello, world!' program in their new environment, a rite of passage for beginner programmers. Afterward we will begin an in-depth discussion into lexical analysis, which defines the languages' tokens and keywords, followed by lab time to develop a working 'lexer' program. With time permitting in the afternoon, a discussion of Formal grammars and a quick introduction to the Backus-Naur Form (BNF) / Wirth notation of context-free grammars, describing the syntax of computer languages. The first day should culminate in the students making their own modifications to a simple example program to colorize source code.
Day 2 In depth discussion of algorithmic expression evaluation and grammars: postfix vs infix notations and their BNF representations together with the various algorithms to parse such expressions, including the 'Shunting Yard' algorithm and 'Recursive Descent.' Lab time will be used to develop an arithmetic expression parser and evaluator which the students may modify into a more advanced scientific calculator. With time permitting there will be additional discussion of various data-types and how they might be handled within an interpreted language.
Day 3 We will engage in a more in-depth discussion of context-free grammars and the actual syntax and evaluation of that syntax with discussion of keywords, operators and symbols with an eye on higher level structures within a program including conditional statements, loops and functions. We will have moved beyond simple calculation into general purpose computing with the student having an understanding of the important parts of computer programming. Lab time will be used for students to begin implementing their toy languages, developing a syntax-tree to be used in the execution phase.
Day 4 We will turn our attention to symbolic resolution after the parsing has been completed and implement a symbolic resolution pass to our parsers with attention to scope and name conflicts, then we begin implementing the syntax-tree evaluator, which will 'run' programs made in our languages with discussion of stacks and storage allocation of variables and the lifetime of storage objects.
Day 5 We will use the final day to finish our interpreters and turn our attention to the design and implementation of an external I/O library that our language can employ, completing our toy language. Further projects and areas of exploration will be discussed.
Final Presentation Presentation of what was covered and possible student demonstrations of completed projects.

Grading and Assignments

The students of this course have the following responsibilities: read assigned readings before lecture, attend lecture, complete homework assignments, take inclass quizzes, take exams, and possibly complete a project.

Late Homeworks

All homework assignments will be given a preferred due date. Assignments can be turned in past the preferred due date, but any assignments turned in late will have their value multiplied by 70% (so the highest grade you can get on a late assignment is 70%). Any assignment discussed in depth in class are effectively closed no credit will be given.

Start Homeworks Early

I suggest attempting a homework assignment the day it is given, or the day after, so that if you have a problem you can ask early. If you continue to have problems in trying to complete the assignment, you will have time to ask again. Many of the homework assignments require thought and problem solving, which takes "time on the calendar" not just "time on the clock". By that I mean that spending an hour on 3 consecutive days is likely to be more productive than trying to spend 3 hours at once on the assignment.

Expected Amount of Work

My expectation is that an average student will spend about 4 hours OUTSIDE of class each week (that is in addition to class time) WORKING PRODUCTIVELY/ EFFICIENTLY (not just staring at the computer) to complete their coursework for this class. Some students may spend less time than this, and some students will spend more.

Grade Cutoffs

Homework assignments and exams are designed so that a standard cutoff for grades will be close to what you deserve. After the first exam I will create a grade in Blackboard called "Letter Grade" that is what your letter grade would be if the semester ended today. Initially, I will assign the following grades: 93-100 A, 90-93 A-, 87-90 B+, 83-87 B, 80-83 B-, 77-80 C+, 73-77 C, 70-73 C-, 67-70 D+, 63-67 D, 60-63 D-, 0-60 F

My goal is that the different grades have the following rough meaning.

A+/A
You understand everything and probably could teach the course yourself.

B+/A-
You understand nearly everything, and should be all set to use this knowledge in other courses or in a job.

C/C+/B-/B
Some things you understand very well and others you don't (more towards the former for a B and more towards the latter for a C).

D-/D+/C-
You did put some effort in, and understand many things at a high level, but you haven't mastered the details well enough to be able to use this knowledge in the future.

F
Normally, students that get an F simply stopped doing the required work at some point.

Blackboard

The course has a blackboard site. Click https://blackboard.indstate.edu/ to go to blackboard. You should see this course listed under your courses for the current term. The blackboard site is only used for giving you your grades. All course content, schedule, etc. is kept in this web site (which you are currently viewing).

Academic Integrity

Please follow these guidelines to avoid problems with academic misconduct in this course:

If cheating is observed, you will at the least receive a 0 for the assignment (and may receive an F for the course), and I will file a Notification of Academic Integrity Violation Report with Student Judicial Programs, as required by the university's policy on Academic Integrity. A student who is caught cheating twice (whether in a single course or different courses) is likely to be brought before the AllUniversity Court hearing panel, which can impose sanctions up to and including suspension/expulsion. See the http://www.indstate.edu/sjp/docs/code.pdf and http://www.indstate.edu/academicintegrity/ for more information.

Please ask the instructor if you have doubts about what is considered cheating in this course.

Special Needs

If you have special needs for the classroom environment, homeworks, or quizzes, please inform the instructor during the first week of classes. If you have any such needs, you should go to the Student Academic Services Center to coordinate this. See http://www.indstate.edu/sasc/programs/dss/services.htm for more information.

Disclosures Regarding Sexual Misconduct

Indiana State University fosters a campus free of sexual misconduct including sexual harassment, sexual violence, intimate partner violence, and stalking and/or any form of sex or gender discrimination. If you disclose a potential violation of the sexual misconduct policy I will need to notify the Title IX Coordinator. Students who have experienced sexual misconduct are encouraged to contact confidential resources listed below. To make a report or the Title IX Coordinator, visit the Equal Opportunity and Title IX website: http://www.indstate.edu/equalopportunitytitleix/titleix.

The ISU Student Counseling Center

HMSU 7 th Floor
812-237-3939
www.indstate.edu/cns

The ISU Victim Advocate

Trista Gibbons, trista.gibbons@indstate.edu
HMSU 7 th Floor
812-237-3939 (office)
812-230-3803 (cell)

Campus Ministries United

Campus Ministries
812-232-0186
http://www2.indstate.edu/sao/campusinistries.htm
www.unitedcampusministries.org
ucmminister2@gmail.com
321 N 7 th St., Terre Haute, IN 47807

For more information on your rights and available resources http://www.indstate.edu/equalopportunitytitleix/titleix