UMBC       CMSC 331

Spring 2010

 

Syllabus

Instructor:

Office:

ITE-226

Office Hours:

 7:15-8:00 ITE 226

Telephone:

410-455-6337 (410-455-3500 )

email:

 

Textbook

Programming in Scala: A Comprehensive Step-by-step Guide (Paperback)

 

by Martin Odersky (Author), Lex Spoon (Author), Bill Venners (Author)

Publisher: Artima Inc; 1st edition (November 26, 2008)

ISBN-10: 0981531601

ISBN-13: 978-0981531601 

(We will not be using the text until the 3rd or 4th week of class)

 Lecture Times and Place        

 TTh........ 5:30 – 86:45 PM ACIV-150

Course Description

This course examines the semantics of programming languages. Topics include: formal specifications of syntax, declarations, binding, allocation, data structures, data types, and control structures, control and data flow; the implementation and execution of programs; and functional programming versus imperative programming. Other possible topics include: non-procedural and logic programming; object-oriented programming; and program verification. Programming projects will provide experience in a number of languages. Prerequisites: CMSC 202.

 Objectives

The objectives of this course are:

  • To learn to view programming languages as collections of tools for problem solving
  • To learn about formal definition and specification of programming languages
  • To learn about different programming paradigms
  • To gain some experience in several programming paradigms

Expectations

Unless otherwise specified, all assignments are to be turned in class on the day they are due (which is given in the schedule). It is your responsibility to contact the instructor by email in advance if this will not be possible.

Students are expected to adhere to all university policies regarding student conduct, academic and otherwise, as posted on the University web site and in the Student Handbook. Academic dishonesty of any kind will not be tolerated and will result in a zero for any assignment, quiz or exam on which there is evidence of such dishonesty. You should make yourself familiar with the Academic Integrity policies here at UMBC  by visiting the UMBC academic Integrity page.

By enrolling in this course, each student assumes the responsibilities of an active participant in UMBCs scholarly community in which everyones academic work and behavior are held to the highest standards of honesty. Cheating, fabrication, plagiarism, and helping others to commit these acts are all forms of academic dishonesty, and they are wrong. Academic misconduct could result in disciplinary action that may include, but is not limited to, suspension or dismissal. Regular class attendance is expected.

Grading Policy

Semester grades will be based on a weighted average the following components.

Component

Weight

~ 7  Online Quizzes  - on days of hybrid lectures via Blackboard

35

~ 2 programming Projects - In groups of 3

40

Final Exam (In Class  - 7/15)

25

FAQ

There is now an FAQ page for the class.

Agenda:

The agenda below is subject to change. I recommend looking at this page before every class. There should not be large changes, just small additions of materials and readings. The lectures notes linked to the class web page should be viewed as an additional resource. They are not intended as a substitute for class attendance. They have been garnered from a number of sources and so are not perfectly integrated. The topics are tied together during the lectures

 

Tentative Agenda (Subject to Adjustment/Revision/Augmentation)

 

Topic

Resources

1/28-2/2

Programming Language Syntax 

 Syntax

2/4-2/25

 

 

Parsing, Parsing Techniques,  and Lexical Analysis

 

Recursive Descent  Notes
Using Parse Trees with  Recursive Descent

Some Useful Java Classes

 

                          Online Lecture Resources                  

·                            Understanding and Using RDP

·                            RDP and the first programming assignment.

·                           Removing Left Recursion – Some Examples  

                                                                                         

 

Programming Assignment P1–Recursive Descent Parser   Assigned 2/23 (Groups Formed 2/25)  Due 3/9  (5 pt Bonus), 3/11 (No Bonus) http://userpages.umbc.edu/~vick/331/assignments/Spring10/Programming/P1/

 

(it may also be useful to look at the example from last year)

http://userpages.umbc.edu/~vick/331/assignments/Summer09/Programming/P1/

2/30 - 3/16

Comparing OOP in  Elementary Scala /Java/C++/ Objective C

 Basic Java Notes (Geared to C++ Programmers)

 

          Online Lecture Resources          

·    Comparing C++ and Java

                                                 

     

Introduction To Scala

 

 

 

 

3/16 - 4/06

 

 

 

 

Functional Programming  in Scala and ML

 

Intoduction to Functional Programming

Traits in Scala

Case Classes Intro

Case Classes , Patterns and Higher Order Functions in Scala

 

 

Programming Assignment P2 Due 4/27 focuses more on Scala's OO aspects of Scala and less on its functional programming aspects.  

see www.gl.umbc.edu/~vick/331/assignments/Spring10/Programming/P2

 

Programming Assignment P3 Due 4/13 – the last day of class. The second of two Scala programming assignments has been posted. It is due the last day of class.  It focuses more on Scala's functional aspects  and less on its OO aspects. see www.gl.umbc.edu/~vick/331/assignments/Spring10/Programming/P3

 

 

4/8-4/20

 

Object Reflection in Java

       Online Lecture Resources  

Reflection (online only)

                                        

Reflection

 

 

4/22-5/13

 

Programming Language Pragmatics

Parameter Passing

 

Final

 
In class Final during Exam period.
Final Thursday May 20 6-8 – Format: Problems  (5/6) ~65% / Multiple Choice ~35 % (~20 questions)