CECS 524     Advanced Topics in Programming Languages      
                                          Syllabus     Fall 2009

Dr. Art Gittleman  ECS 534 (562)985-1530  artg@csulb.edu
Office Hours: M 7:30-8pm, Tu 1:30-2, W 2:15-3, 7-8pm, Th 1:30-2
Code: 6865 lecture MW 8-9:15 pm ECS 204 
Grading:  Midterm  exam                                     Wed. Oct. 21                          100 points 
                  Final exam                                            Mon. Dec. 14, 7:15-9:15     100 points
                  Computer projects                                                                               200 points                  

Texts:   Programming Clojure
               Stuart Halloway, Pragmatic Bookshelf, 2009.

                See the course site at www.cecs.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.  
 
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 and Linux. Some of these machines have two processors.