COSC 341 Programming Languages WINTER 2015
Course communication
- Course home page -- emunix.emich.edu/~haynes/341/wi15
Instructor: Professor Susan Haynes
- Home page: http://emunix.emich.edu/~haynes
- Office: 511E Pray-Harrold
- Email: shaynes @ emich.edu
Office Hours
M | 1 - 2 pm |
T | 1 - 2 pm, 3:30 - 4:30 pm |
W | 1 - 2 pm, 3:30 - 4:30pm |
θ | 1 - 2pm |
Required Textbooks:
- Scott, Programming Language Pragmatics, 3rd Ed, ISBN 0123745144, Morgan Kaufmann, 2009.
- Hebert, Learn You Some Erlang for Great Good.
Free, online version HERE
- Lipovaca, Learn You A Haskell for Great Good.
Free, online version HERE
- Python -- a good source for Python. There are many. I am using
Barry, Head First Python, ISBN: 1449382673, O'Reilly Media, 2010.
Catalog Description: Formal definition of programming languages; structure of simple
statements; globalproperties of algorithmic languages; data description; run-time
representation of programs; procedural languages such as C and C++, non-procedural
languages such as Lisp or Prolog. Credit will not be given for both COSC 341 and COSC 34
Learning Objectives (from the "master syllabus"):
- Explain the compilation process and the interpretation process.
- Read and create BNF to describe syntax
- Read and create one semantic description for a language.
- Understand design alternatives for
- control structures
- parameter passing
- scoping
- types and type definition
- Write programs in at least two different paradigms (functional, logical, OO, ...) in at
least two languages, neither of which is the "teaching language" of the department.
Specific objectives
- Beginner level facility (COSC 111) in Python
- Beginner level facility in Erlang
- Beginner level facility in Haskell
- Write an interpreter, including symbol table and run time stack.
- Introduction to Java bytecode and to the JVM
What is beginner level facility? It comprises primitive types, aggregate
types, blocks, conditionals, looping, functions, understanding scope and lifetime.
Grading:
Projects | 60% |
Midterm (1st half of term) | 15% |
Final Exam (2nd half of term) | 15% |
Other | 10% |
Assignment of grades:
- 91 - 100% A range
- 81 - 90% B range
- 71 - 80% C range
- 61 - 70% D range
Academic Honesty:
I expect you to behave according to the highest possible ethical standards. If you claim anyone else's work as your own, or if you allow someone else to claim your work, you will receive an E in this class.
Additionally, I will report your name to the Dean of Students for possible expulsion.
Warning: the Internet is seductive; there is a lot of publicly accessible material out there. I will tell you when and how it will be acceptable to cannibalize code for a project. It is never acceptable to cannibalize text (e.g., for a paper). Do not plagiarize! Theft is beneath you.
Caveat: This syllabus and the course outline will be changed as I deem pedagogically necessary or preferable. I will publish written changes to the syllabus. Such a change may require a change in grading rubric.