CECS 524     Advanced Topics in Programming Languages      
                                          Syllabus     Fall 2007

Dr. Art Gittleman  ECS 534 (310)985-1530  artg@csulb.edu
Office Hours: M 7:30-8 pm, Tu 5-5:30 pm, W 2:15-3, 7-8 pm
Code: 8702 lecture MW 8-9:15 pm ECS 308 
Grading:  Midterm  exam                                     Mon. Oct. 22                          100 points 
                  Final exam                                            Mon. Dec. 17, 7:15-9:15     100 points
                  Computer projects                                                                               200 points                  

Text:   See the course site at www.cecs.csulb.edu/~artg/524/
             Course materials may be found online.  Later in the semester we will use 
             Agile Web Development with Rails Second Edition    
             (pragmaticprogrammer.com). 

Topics:  
      Ruby basics (quickly), blocks, and methods.  Ruby gems. Ruby built-in classes 
      and modules that support metaprogramming (Class, Method, Module, Object,
      Kernel).  Metaprogramming and domain specific languages examples.    
      Internationalization.  Rake.  Distributed Ruby with DRb and Rinda. Ruby on 
      Rails web development.
       
Goals:  
      To learn advanced programming language concepts in a context of great 
      interest to developers.  Ruby on Rails has captured much interest as a web
      development framework for CRUD applications.  The dynamic flexibility of Ruby
      makes it excellent for metaprogramming (programs that create programs) and 
      creating domain specific languages.  Rinda is a coordination language for 
      communication among parallel processes which is more important as single 
      processor speeds top out.