CSE614 (Spring 2010)
Advanced Programming Languages

[ General Information | Lectures | Handouts | Other Pointers | Requirements ]
[ Announcements ]


General Information

Course description: This course is officially an advanced graduate level course, but the materials are for anyone who likes or dislikes algorithms/programming/problem-solving, for good reasons, but who would like to (1) get better at them, by learning a systematic method, (2) see applications in security policy frameworks, database applications, web applications, program analysis, and many more, and (3) be exposed to cool languages, such as Python. | Course work: Weekly problem-solving exercises in class, several reading assignments, and a course project where students may design and implement an advanced database/web/security application, experiment with program analysis, develop a general optimization method, or take on other tasks that exploit or extend the methods studied. Good projects can also lead to research publications. | Prerequisites: a programming language or compiler course, an algorithm course, a database course, and skills for programming in a high-level language such as Java; or permission of the instructor. | Credits: 3.

Instructor: Annie Liu | Email: liu@cs.sunysb.edu | Office: Computer Science 1433 | Phone: 632-8463.

Hours: Wed 10:30AM-12:50PM, in Computer Science 1441 | Office hours: TBA.

Textbook: There is no published textbook for the course; relevant materials will be given as the course proceeds.

Grading: In-class exercises, assigned readings, and a course project, each worth 30%, 35%, and 35% of the grade, respectively. Homework is always due in class the following Wednesday. Reduced credit for late submissions, 20% per day.

Course homepage: http://www.cs.sunysb.edu/~liu/cse614, containing all course-related information.


Lecture Schedule

Note: many example problems will be discussed in class, along with the method. In fact, everyone will be asked to solve some problems in front of the class, following the method we discuss, almost every time (but don't worry---it will be my fault in explaining the method if you cannot solve the problems:-)).

1. Overview: problems, application domains, challenges, outline of methods and languages.

2. A language: Python.

3. An "application": role-based access control (RBAC), an ANSI standard.

4. Loops and arrays --- incrementalize.

5. Set expressions --- incrementalize and implement.

6. An "application": relational database query implementation.

7. Recursive functions --- iterate and incrementalize.

8. Logic rules --- iterate, incrementalize, and implement.

9. An "application": querying complex graphs.

10. Project discussions.

11. Objects and classes --- incrementalize across module abstraction.

12. Overall: iterate, incrementalize, implement.

13. More on applications and implementations.

14. Project presentations.


Handouts

Handout Q: Questionnaire

Handout for week 1, on method overview.

Quiz 1 in week 2, added as promised.

ANSI Standard for Role-Based Access Control, ANSI INCITS 359-2004, 2004.

Making Specifications Simpler and Clearer: A Case Study of Role-Based Access Control, by Y.A. Liu and S.D. Stoller. (This is a slightly revised version of Role-Based Access Control: A Corrected and Simplified Specification, In Department of Defense Sponsored Information Security Research: New Methods for Protecting Against Cyber Threats, pages 425-439, John Wiley & Sons, 2007.)

Handout for week 4, on loops (incrementalizing expensive arithmetic and array computations in loops).

Handout for weeks 5 and 6, on sets (efficient implementation of set expressions).

Handout for weeks 7 and 8, on recursion (optimizing recursive functions, recursion to iteration, dynamic programming).

Handout for week 9, on rules (generating efficient implementations from Datalog rules).

Handout for weeks 10 and 11, on objects (incrementalizing across object abstraction).

Handout for week 12, on method summary and conclusion.

Handout P: Presentation evaluation


Other Pointers

Python Tutorial | Library Reference | Language Reference
Python | Python Documentation | Python 2.6 Quick Reference | Python 3.0 Quick Reference ?

Core RBAC executable specification in Python

All RBAC executable specification in Python


Requirements

This course is officially an advanced graduate level course, but you do not need to have taken other graduate-level courses; the most important prerequisites are programming skills, knowledge of algorithms and data structures, and motivation for studying a systematic method for developing correct and efficient algorithms and programs.

You should learn all information on the course homepage. Check the homepage periodically for Announcements.

Do all course work. The homeworks and projects are integral parts of the course as they provide concrete experiences with the basic concepts and methods covered in the class.

Your handins, whether on paper or in electronic form, should include the following information at the top: your name, student id, course number, assignment number, and due date.

Your work should be submitted in a neat and organized fashion; for handins on papers, if your handwriting is hard to read, then your work needs to be typed.

Your approach to solving problems is as important as your final solutions; you need to show how you arrived at your solutions and include appropriate explanations.

If you feel your grade was assigned incorrectly, please bring it up no later than two weeks after the assignment was returned to the class.

Academic honesty: Homeworks and projects must be done individually, unless specified otherwise; you may discuss with others and look up references, but you must write up your solutions independently and credit all sources that you used. Any plagiarism or other forms of cheating discovered will have a permanent consequence in your university record. For more comprehensive information on academic integrity, please refer to the academic judiciary website at http://www.stonybrook.edu/uaa/academicjudiciary/

Disability: If you have a physical, psychological, medical or learning disability that may have an impact on your ability to carry out assigned course work, please contact the staff in the Disabled Student Services office (DSS), Room 133 Humanities, 632-6748/TDD. DSS will review your concerns and determine with you what accommodations are necessary and appropriate. All information and documentation of disability are confidential.


Annie Liu