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."
|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.|
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.
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 FMy goal is that the different grades have the following rough meaning.
You understand everything and probably could teach the course yourself.
You understand nearly everything, and should be all set to use this knowledge in other courses or in a job.
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).
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.
Normally, students that get an F simply stopped doing the required work at some point.
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.
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.
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.
HMSU 7 th Floor
Trista Gibbons, firstname.lastname@example.org
HMSU 7 th Floor
321 N 7 th St., Terre Haute, IN 47807
For more information on your rights and available resources http://www.indstate.edu/equalopportunitytitleix/titleix