Today's applications are increasingly mobile. Computers are no longer confined to desks and laps but instead live in our pockets and hands. This course teaches students how to build mobile apps for Android and iOS, two of today's most popular platforms, and how to deploy them in Android Market and the App Store. Students learn to write native apps for Android using Eclipse and the Android SDK, to write native apps for iPhones, iPod touches, and iPads using Xcode and the iOS SDK, and to write web apps for both platforms.
I've been interested in pursuing iPhone programming for some time. I've found that one sure fire way to focus on a topic is to have assignments with deadlines.
This course focuses on developing applications for modern smartphone operating systems. Most of the course is dedicated to Apple's iPhone OS and Google's Android. Rapid application development techniques are covered, as well as setup of the development environment, real-world testing, and deployment to both the iTunes App Store and Android Marketplace.
Networks are now too large, complex, and diverse to be built on an ad hoc basis. This course provides a structured approach to the design, analysis, and implementation of networks and protocols. We study various protocols, including TCP/IP; WWW/HTTP; e-mail/SMTP; multimedia protocols for voice and video; and the IEEE 802 LAN protocol suite. In each case, the protocol's functions and the underlying reference model are discussed. LAN architecture and design, internetworking using switches and routers, and the design and analysis of both private networks and the Internet are presented.
Today's websites are increasingly dynamic. Pages are no longer static HTML files but instead generated by scripts and database calls. User interfaces are more seamless, with technologies like Ajax replacing traditional page reloads. This course teaches students how to build dynamic websites with Ajax and with Linux, Apache, MySQL, and PHP (LAMP), one of today's most popular frameworks.
Google has become a verb, and a cultural and business phenomenon. In this course we try to understand some of the techniques that made Google possible. We analyze various access methods for efficient search and retrieval from text and other document collections. Examples include suffix arrays, inverted files or inverted indexes, and signature files. We also examine the commercial search engines that use custom network architectures and high-performance hardware to achieve sub-second query response times. Some time is devoted to text indexing engines used in relational database systems.