UMBC       CMSC 331

Summer 2009

 

Syllabus

Instructor:

Shon Vick

Office:

ITE-226

Office Hours:

 After Class

Telephone:

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

email:

mailto:vick@umbc.edu

Textbook

Programming in Scala: A Comprehensive Step-by-step Guide 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 

 

 

Lecture Times and Place        

    MW......... 6:00:– 8:20 PM         ITE-227

Course Description

This course examines the semantics of programming languages. Topics include: formal specifications of syntax, declarations, binding, allocation, data structures, data types, 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)

 

Topic

Resources

W 5/27

Programming Language Syntax 

 Syntax

6/1

6/3

6/8

 

 

Parsing

 

Recursive Descent  Notes
Using Parse Trees with  Recursive Descent

Some Useful Java Classes

 

                          Hybrid Lectures                  

ü       Understanding and Using RDP

ü       RDP and the first programming assignment.

ü      Removing Left Recursion – Some Examples

                                                                                                

 

Programming Assignment P1–Recursive Descent Parser   Due 6/22 - see

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

6/10

6/15

6/17

6/22

 

 

Comparing OOP in  Scala /Java/C++

 Basic Java Notes (Geared to C++ Programmers)

 

                  Hybrid Lecture         

ü       Comparing C++ and Java

                                          

     

Introduction To Scala

 

 

 

 

6/26

7/6

7/8

 

 

 

 

Functional Programming  Scala

 

Traits in Scala

Case Classes Intro

Case Classes , Patterns and Higher Order Functions in Scala

 

Programming Assignment P2–Scala (see http://userpages.umbc.edu/~vick/331/assignments/Summer09/Programming/P2  Due 7/13 5 pt Bonus by 7/15 no bonus

 

7/8

 

7/13

 

Object Reflection in Java

       Hybrid Lecture         

Reflection (online only)

                                     

Reflection

 

 

7/15

 
Online Final Posted Wed July 13th Due 7/15 at 11:59 PM (~30 Multiple choice questions) / Problems 40% (2 of 3)

 

 

Note: Online materials (lectures and quizzes) will be posted NLT 11:59 on the Thursday of week the lecture.