CS 683 Emerging Technologies

Fall Semester, 2008

Course Abstract

Course Web Site

© 2008, All Rights Reserved, SDSU & Roger Whitney

 San Diego State University -- This page last updated 8/13/08

CS 683 Emerging Technologies

Fall Semester, 2008

Course Abstract


The course will cov e r three different topics: Erlang, Google's Android and cloud computing (Amazon's cloud computing and Googles app server). We will spend about 1/3 of the semester on each topic.

Erlang is a parallel programming language. Intel has committed developing increasing number of cores in a single processor. Yet parallel programming is considered hard. So there is considerable effort in developing tools, languages and models to reduce the complexity of parallel programing.  Scalable and highly reliable systems have been built using Erlang. As a result some are promoting Erlang's model as the way to write parallel code. The goal will be to understand Erlang's model and how it differs from more traditional approaches. The course does not assume any knowledge of Erlang. However experience with threads and/processes will be very useful.

Cloud computing is a relatively new way of providing compute resources that allow applications to scale from one to thousands of machines on demand in minutes. Venders like Amazon, Google and IBM provide server farms and the infrastructure to scale applications across multiple machines. You write your applications to use the vendor's cloud API. The application then runs on the vendor's machines and typically you pay only for resources used. Amazon's cloud computing supports Java applications. Googles cloud computing support Python applications. Either service will require students to open accounts with the vendor (Google or Amazon) and pay for the resources used. The cost will be minimal assuming students are careful and don't let their applications run for weeks on end.

Google's Android is a system for developing applications on cell phones and mobile devices. There are a number of systems that allow you to develop applications for cell phones. However in the US the mobile market is fragmented between different vendors and software platforms. Google has made Android open source and is working with multiple vendors to support Android. We will look at Android to see how flexible and usable it is for developing mobile applications. Java is used to develop Android applications, so students need to know Java.


To take this course students need to

  1. Know Java

  1. Learn new material quickly

  1. Deal with poorly documented systems

  1. Deal with buggy systems

  1. Install software


Programming Erlang: Software for a Concurrent World, by Joe Armstrong.

Materials used for Android and Cloud computing will be available on-line