CSE614 (Fall 2013)
Advanced Programming Languages

[ General Information | Lecture Schedule | Resources | Requirements ]

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 important applications, in security policy frameworks, database applications, program analysis, distributed systems, and many more, and (3) learn more about cool languages, such as Python. | Course work: Weekly problem-solving exercises in class, reading and programming assignments, and a course project where students may design and implement a database/security/distributed 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.stonybrook.edu | Office: Computer Science 1433 | Phone: 631-632-8463.

Hours: Wed 10AM-12:40PM, in Computer Science 1441 | Office hours: Wed 9:30-10 AM, 12:40-1 PM; Thu 11-11:30 AM; Fri 9:30-10 AM, 12:40-1:30 PM; by appt; or stop by any time I'm around.

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

Grading: In-class exercises, reading and programming assignments, and a course project, worth 30%, 30%, and 40%, respectively, 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.stonybrook.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 discussed, 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 and advanced features.

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": database query optimization.

7. Recursive functions --- iterate and incrementalize.

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

9. An "application": implementing distributed algorithms.

10. Project discussions.

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

12. An "application": querying complex object graphs.

13. Summary: a deeper look, abstraction, and experiments.

14. Project presentations (Tue 12/17 2:15-5PM).


Interactive Site of This Course, for students in the class

Computer Science Department Windows Computing Facilities


This course is officially an advanced graduate level course, but you do not need to have taken 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.

Learn all information on the course homepage. Check the interactive site periodically for dynamic contents.

Attend all lectures and take good notes. This is the most efficient way to learn the course materials, because we will both distill and elaborate reading materials.

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

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

Your programming solutions should always be submitted with a README.txt file explaining where things are, what you did and found for the assignment, and how to run and test your code. Always include good comments in your code.

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. Always include precise references to all sources used.

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

Academic Integrity: All course work 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.

Each student must pursue his or her academic goals honestly and be personally accountable for all submitted work. Representing another person's work as your own is always wrong. Faculty are required to report any suspected instances of academic dishonesty to the Academic Judiciary. For more comprehensive information on academic integrity, including categories of academic dishonesty, please refer to the academic judiciary website at http://www.stonybrook.edu/uaa/academicjudiciary/

Americans with Disabilities Act: If you have a physical, psychological, medical or learning disability that may impact your course work, please contact Disability Support Services, ECC(Educational Communications Center) Building, Room 128, (631)632-6748. They will determine with you what accommodations, if any, are necessary and appropriate. All information and documentation is confidential.

Critical Incident Management: Stony Brook University expects students to respect the rights, privileges, and property of other people. Faculty are required to report to the Office of University Community Standards any disruptive behavior that interrupts their ability to teach, compromises the safety of the learning environment, or inhibits students' ability to learn. Further information about most academic matters can be found in the Undergraduate Bulletin, the Undergraduate Class Schedule, and the Faculty-Employee Handbook.

Annie Liu