I am starting to get inquiries about the course CS 683 Emerging Technologies (ET) to be offered in the Fall 2006 semester so it is time to produce a course description.
Overview
The short description is that the course will cover Ruby, Ruby on Rails, Python, Django, CSS, Javascript, AJAX and Web Services. For details read on.
Course Background
CS 683 is a graduate topics course course covering some new technologies. As a graduate course undergraduate students can only take it if graduate students do not fill up the course. Normally I turn way graduate students in this course. In the six times the course has been offered no undergraduate student has been able to take the course.
The leading edge of technology is often called the bleeding edge. There has not been time to polish the technology. There are rough edges (bugs, poor or no documentation, incomplete implementations, rapidly changing api, missing features, poor tool support) that make it harder to deal with the technology. This means that the course is a bit more work than normal. Since this will be the first time that I cover these areas and there are no textbooks covering these things the course will also be rougher than normal. This is the trade off one makes dealing with new technology. As a result the course will require a fair amount of work and initiative of the students. The course covers a number of topics, which means we will not cover anyone topic in detail.
Some Motivation
While the World Wide Web is always changing it seems to be changing even more these days. Venture capital is flowing into web based companies. One area of change is the development of new frameworks for creating web applications. We will look at two new frameworks that have promise to reduce the time required to develop web applications: Ruby on Rails and Django. What one can do on the web is changing, for example look at Google Maps and Gmail. AJAX is being used to provide this functionality. There are a number of mashup web sites, that is sites that combine and use other sites and data. A good example is Housing Maps, which combines Google Maps and Craigslist showing the location of rentals and housing for sale. Such mashups are possible due to APIs provided by companies to access their services. Often these APIs are done with Web Services.
To learn these technologies students will develop programs that use the technologies. If you are looking for a survey course that just talks about technologies or one that talks about the social, economic and technological ramifications this course is not for you. The goal is to give computer science students some experience with these technologies.
Some Details
Ruby. Ruby is an interesting and powerful dynamic programming language. Recently interest in the language has grown greatly mainly due to Ruby on Rails, which is why the course will look at Ruby. The standard text on Ruby is Programming Ruby 2n’d Edition by Thomas & Hunt. The first edition is available on-line, but covers a much older version of Ruby. The course will spend about 2 weeks on Ruby. See last years course for the old lecture notes and assignments. There are some on-line tutorials to ruby, here is a popular one.
Ruby on Rails. This is a new framework for developing web applications and has a lot of promise and interest. The developers paid attention to the difficulties with other web application frameworks. Developers are reporting that they can develop web applications in much less time using Ruby on Rails. Last year a students took one day to redo his semester Java/Struts web project in Ruby on Rails. We will spend about three weeks on Rails. The Ruby on Rails site has a documentation page with links and information to books, tutorials and on-line api.
Python. Python is a popular dynamic programming language. See the main Python web site for more details. The course will spend about two weeks on Python. The main motivation for covering Python is Django.
Django. This is a really new framework for developing web applications that uses Python. The current version of Django is 0.91. Hopefully version 1.0 will be out by the fall. Some claim that Django is to Ruby on Rails as Ruby on Rails is to Java/Structs, that is really fast development of web applications. We shall see. The course will spend about three weeks on Django. See the Django web site for documentation, there are no books on Django yet.
AJAX. Ajax uses CSS, Javascript and Xhtml to provide some interesting client side functionality in web browsers. Some web application frameworks, like Ruby on Rails, generate the needed Javascript. So it is not clear how much time we will need to spend on Javascript. I estimate 2 weeks on CSS, Javascript and Ajax.
Web Services. Ruby and Python have SOAP implementations. It is not clear how much detail we will need to add a Web service interface to a web application. Estimate 2 weeks on this topic.
Prerequisites
The course changes each time it is taught, so there can not be a fixed list of prerequisites. This is an advanced graduate course at the Masters level. None of the topics in the course are that deep. If I were a manager in industry I would expect anyone with a CS Masters degree to be able to learn any topic in the course by themselves. Past lecture notes and assignments for the course are on-line. With all this information an advanced graduate student should know if they are capable of taking this course.