CMSC 308: Organization of Programming Languages
 (Fall 2015)
(as of August 22, 2015)

Instructor: Scott McElfresh (pronounced  mac' - el- fresh)
Office: 
Ruffner 346     Phone:  x2249
Email:   ProfScottMcElfresh @ gmail.com (checked more frequently) or  mcelfreshsa @ longwood.edu
Office Hours: 
- Wed 9:30-10:30am 
- TuTh  2-3:30pm
- or when I am in my office with the door open
- or by appointment
Other times may be announced in class or on the website.

Course Web Page:
http://cs.longwood.edu/~scottmce/Fall2015/CMSC308-ProgLang/  Most of the handouts in this course will be available through this World Wide Web address.   

Canvas:
Canvas will be used for submission of some assignments and recording of grades on individual assessments.   NOTE:  Canvas does not always calculate course grades correctly.  The relative weights are in this syllabus.

Course Description:   
From the catalog:
"Topics include language and definition structure, data types and structures, control structures and data flow, run-time characteristics and lexical analysis and parsing. Programming assignments will involve the use of several different languages. Prerequisite: CMSC 208. 3 credits."

Course objectives:
At the end of the course, a successful student will be able to:

Textbooks:  There is one required textbook for this course.

Technology:   It is assumed that you have a laptop that you can bring to class and can install software on if necessary.   Much of the software to be used is free.   The software packages that are not free have free alternatives that students may download and install.

Exercises:  
    There will be an exercise handed out during many class periods.  Some of these will be completed during class and some will be intended to be completed outside of class.   Note that some "homework" assignments will be due the VERY NEXT CLASS PERIOD, while others may have a longer handin horizon, depending on the nature of the assignment.   Thus, some assignments will be worth more than others.  In order to determine the overall exercises grade, I will add up the number of points received on exercises, and divide that number by the total number of points that it was possible to recieve on exercises.     
       Lateness:  Each exercise will give not only a due date, but a due time.  Some exercises may be gone over in class, so you will need permission to hand in asisgnments late.  If I agree to accept an assignment late, there may be a 50% penalty.

Quizzes:  
There will be quizzes throughout the semester.   These will typically take the form of short (5-15 minutes) sets of questions.  There will be no make-up quizzes given.    If more than 5 quizzes are given, the lowest two quiz scores for each student will not be calculated into the course grade.

Exams: 
There will be an in-class exam given on the following date:  

There will be no makeup exams given without proper medical documentation.

Special Note: This exam is AFTER Grade Estimates are turned in on October 5.  Thus, Grade Estimates will be based on exercises and quizzes up to that point.

Final Exam: 
There will be a comprehensive written exam.   More details on this will be announced as the time approaches. 

Grading:
The relative weight of each item in determining your course grade will be as follows:
 
  Exercises: 50%

Quizzes: 15%

Inclass Exam: 15%

Final Exam: 20%
Course Grades will be assigned as follows: 
 
Course percentage   Course Grade
90 - 100
A-, A
80 - 89.9
B-, B, B+
70 - 79.9
C-, C, C+
60 - 69.9
D-, D, D+
 0  - 59.9 
F
+'s will be assigned in the top 2 percentange points of the range.
-'s will be assigned in the bottom 3 percentange points of the range.
SPECIAL NOTE:  Exercises that are not handed in, or quizzes and exams not taken will count as a 0.    Canvas does not always calculate these accurately.

Collaboration:
Unless otherwise specified, all work is assumed to be your own.   You are encouraged to discuss the exercises with other students, but you must write up your own solutions.  Some guidelines:
Efforts will be made in class to describe these issues.  If you have any questions as to what is appropriate and what is not, please ask me about it.

Academic Honesty:     
Longwood University is an academic community that subscribes to an honor system.   By accepting membership in this community, we all assume the obligation to be trustworthy in all pursuits.  Violations may receive grade penalties in the course and be referred to the Honor Board, which may impose additional penalties.

Tentative Topic outline:

Week Dates Topics
1 Aug 24 - 28 Overview; Syntax specification
2     Aug 31 - Sept 4     Syntax; Parsing
3 Sept 7 - 11 Functional Programming
4 Sept 14 - 18 Functional Programming; Lambda Calculus
5 Sept 21 - 25 Parameter Passing
6 Sept 28 - Oct 2 Scoping
7 Oct 5 -  9 Semantics; Typing
8 Oct 12 -  16 Fall Break; Logic Programming
9 Oct 19 -  23 Logic Programming
10 Oct 26 -  30 Object Orientation
11 Nov 2 - 6 Parallel Programming Constructs
12 Nov 9 - 13 Parallel Programming Constructs
13 Nov 16 - 20 TBA
14 Nov 23 - 27 TBA; Thanksgiving
15 Nov 30 - Dec 4 TBA
Dec 10 Final Exam

A detailed day by day calendar will be kept up-to-date on the course website.