CECS 524/624     Advanced Topics in Programming Languages
Syllabus     Fall 2014

Dr. Art Gittleman  ECS 534 (562)985-1530  art.gittleman@csulb.edu
Office Hours: MW 9:30-10 am, 1:30-2 pm, 4:30-5 pm
Code: 524: 10405        Lecture: MW 5-6:15 pm  SPA 110 
Grading: Midterm exam          Wed. Oct. 15                100 points 
           Final exam             Wed. Dec. 17, 5-7 pm       100 points
           Five Computer projects                              200 points   
               Due: 9-10, 10-1, 10-22, 11-12, 12-3               
          Attendance and participation                          50 points
 
Texts:   Programming Clojure, Second Edition
               Stuart Halloway, Aaron Bedra, Pragmatic Programmers, 2012.
           Clojure Programming, Clojure Cookbook, and Joy of Clojure are available online.    
           Go to http://csulb.edu/library, click on databases by title and select Safari. You will 
           need to login and may need to create an account with your student ID.
          See the course site at www.csulb.edu/~artg/524/  for additional material.
Topics:  
      Now that multicore computers are becoming the norm the programming challenge is how 
      to use them effectively. Clojure (pronounced "closure") is a functional language which  
      provides a good contrast to other languages. It is a descendant of LISP created by Rich 
      Hickey whose views on languages are well worth hearing and reading. Many programming 
      language topics will be illustrated using Clojure. Importantly Clojure runs on the JVM 
      (Java Virtual Machine) and so it can use Java libraries. Additional topics as time permits.
 
Goals:  
      To learn advanced programming language concepts in a context of great interest to 
      developers. One of the biggest current challenges is programming multicore computers.  
      Today two and four processor systems are common but the number of processors will 
      grow rapidly. Clojure is designed to work well on a multicore system. The default in 
      Clojure is immutable data which causes no extra problems in concurrent processing. 
      Mutable data is handled in a much simpler way than in languages such as Java.
          
Platforms: 
      Clojure is open source and runs on Windows, Mac, and Linux.  It is installed in the labs 
      on Windows. Some of these machines have multiple processors.

Class participation: Use class time to make sure you understand the material. Come prepared and ask questions. No electronic devices, phones, laptops, etc., are permitted.

Cheating: Work is to be your own. Do not show your code or copy others' or use online code.  The penalty is failure from the course for all students involved.

Withdrawal deadline: Friday, November 14.