EE382V - Advanced Programming Tools

This course is intended for students who would like to learn about fundamental programming tools and their application to the development of real-world applications, specifically web, mobile, and social apps.  


You should be comfortable with Java and the Unix shell. At a minimum, you should have written programs in which your contribution is at least 100s of lines long. We will use Python for server-side development - Python will be introduced as part of the class. You should also have knowledge of basic data structures and algorithms.


Programming is difficult - some of the problem developers face include

Using the right tools can solve these problems. Examples include tools for version control, Python, design patterns, program construction, and automatic testing.

Our approach will be to introduce a specific problem, show how a tool can solve the problem, and then develop the technical principles underlying the tool. We will have written homework problems as well as coding exercises for each concept.

The class will have a very substantial design project that will begin at the start of the term. Use of the tools will be a required part of the project. To prepare you for the design project, we will build a photo sharing app. Specifically, we will learn how to build services on Google AppEngine in Python; these will be used as the backend to an interactive website and an Android app.


The course will be largely based on my class notes, linked below.  The sources for these notes are cited in the slides. The contents of this page will change over time; e.g., I may change lecture topics and homework/lab problems. Some material, such as announcements, will be at Blackboard.


Adnan Aziz, (Please put APT in the subject line.)

Google Voice: 530-7ADNAN7.

Office Hours: MW 1030-1130, ACES 6.120 and by appointment.

Teaching Assistant

Nima Dini, (Please put APT in the subject line.)

Office Hours: Tuesday 1:00-2:30, ACA 145 | Friday 1:00-2:30, POB cubicle 5NEo1A and by appointment.

Yanfeng Zhao (Kevin), (Please put APT in the subject line.)

Office Hours: Thursday 12:00-2:00PM, ACA 110

Please use the Piazza forum as much as possible!


Deliverables: Homeworks, Labs, Miniproject, and Project

Due dates (11:59 pm on the due date):

Submission Guidelines

You should create a Google Doc for your response to each HW and LAB.

  1. Submission through Google Docs is a four step process:
  1. Make sure that the Doc is under your class Google Drive Folder that you will be creating in HW0. If there are multiple Docs for the assignment all of them should be put under a Folder which in turn should be under your class Folder
  2. Put a link to the assignment Doc/Folder from your class homepage Doc that you will be creating in HW0
  3. Make sure that you have added the instructor and the TA as Collaborators to your github workspace.

All of these should be done by 11:59pm on due date or your submission will be deemed late

Wall of Fame


The School of Engineering's Add/Drop policy is spelled out here. Unless there's an exceptional circumstance (such as an ongoing cheating investigation), I will not stop you from dropping.

The University of Texas, Austin provides upon request appropriate academic accommodations for qualified students with disabilities. Please contact the Office of Dean of Students at (512) 471-6259, or, or the College of Engineering Director of Students with Disabilities at (512) 471-4321, for more information.

You are encouraged to interact with your peers when solving labs and homeworks.  However, solutions should be written up separately, and you should note the people that you  discussed the material with. Cheating will be dealt with in accordance with university policy,  as described in