Update 6.2.2009: I've received the list of students for the class. If you took TOP with me last year, your wiki account is unchanged (contact me if you forgot your userid or password). Otherwise, your wiki account id is first initial concatenated with last name (e.g., Adnan Aziz is aaziz) and password is your uteid (please update it immediately). Assignment 0 is due this Friday (i.e., 6.5.2009).
Update 6.1.2008: I've been told I will have the roster tomorrow (6.2.2009 - Tuesday), and I'll create accounts and mail each of you as soon as I receive the roster.
Note: As of 5.29.2009, I still don't have a list of student enrolled in this class. I've updated the due dates for assignments for 2009, but can't create your Wiki pages, so Assignment 0 is on hold. I'll be away over the weekend (5.29-5.31) and not able to read mail.
Each of you will have a personal Wiki page with a password for uploading homework. Detailed submission notes are linked here.
This course is intended for software engineers who would like to learn how increase their productivity by learning about programming tools.
Programming is difficult—some of the problem developers face include
Using the right tools can solve these problems. Examples include tools for version control, documentation, program building and configuration, automatic testing, and program analysis.
Our approach will be to introduce a specific problem, show how the tool solves the problem, and the technical principles underlying the tool. We will use actual open-source tools that are freely available, and whose operation is completely transparent.
The formal course descriptor is linked here.
Have you ever…
If so you, take this class!
The course will be based on the excellent text Essential Open Source Toolset, by Andreas Zeller and Jens Krinke, 2005, John-Wiley.
Your task in this class will be to read and understand ET. It is to the point (roughly 350 pages) and written. Each chapter includes examples, exercises, and further reading.
Here's a blurb from the book - ”This book offers indispensable guidance on how programming tools can be used to solve problems which occur regularly during the development of software. It will enable you to work with greater confidence and efficiency, and achieve better results.”
Option III Software Engineering graduate students should already have the programming background needed to appreciate ET.
Assignments will consist of a written component (e.g., “Your boss demands you code exclusively in Perl - tell him 5 dangers of this method”), as well as implementation. Implementation involves taking code distributed with the book, and modifying it in small ways. I expect that even if you are not comfortable with the underlying language, looking at the given code, together with the examples in the book, should be enough for you to do the implementation.
The tools used in the book are open source, and available for Unix/Linux, and Windows (e.g., via Cygwin).
I will assign homeworks consisting of exercises from ET. The homeworks will not be programming intensive—their purpose is to make you read ET in an organized manner. Grades will be assigned solely on the basis of performance on the homework.
HW is due at 11:59pm (Austin time) on the due date.
The book consists of 20 chapters, divided into 7 topics.
HW is to be submitted via uploading on the class wiki—please go through this exercise to make sure your account is working, and that you can upload/edit/create pages.
Also look quickly throught the programming component of the assignments, and make sure you have the tools. These tools are available on the LRC machines (e.g., balrog.ece.utexas.edu), are part of standard Linux installs, and you can install them on a Windows machine using Cygwin.
Due Friday, May 29, 2009
A very nice summary of version control
Due Tuesday, June 9, 2009
An easy to read writeup on Yacc and Lex. Here is the source code. Another writeup that talks more about the internals of yacc/lex.
Here's a small example parser I wrote up that illustrates how you can have more than one type of result returned by the lexer. It does not use lex; here is the same example using a lex generated lexer.
Here is a richer calculator, with support for user-defined variables.
Some online guides to Yacc and Lex
Examples of lex and yacc source:
Due Sunday, June 21, 2009
Here is a nice short tutorial on make. The Doxygen website has comprehensive documentation. Take a look at Doxygen generated documentation for Postgres, an SQL server, and Azinix, a network monitoring and control system.
lcalc; doxygen—details hereDue Sunday, June 28, 2009
Read John Ousterhout's classic classic paper on scripting. Also check out Brian Kernighan's succint language tutorials.
Due Sunday, July 5, 2009
lcalc programLogging utilities for Java and C.
Source code: primecount.c, primelib.c, primelib.h
Due Sunday, July 12, 2009
lcalc (parts 1-5 only)Due Sunday, July 26, 2009
Rational example in EclipseDue Sunday, Aug 2, 2009
I teach another summer topics class, “The Practice of Programming” (PoP), which has been quite popular over the past few years. I developed ToP based on conversations with the students who took PoP. The two classes are meant to be complementary - PoP is more about broader principles, while ToP is focused on specific tools. For most of you, PoP would probably be the better one to take first, but they are self-contained, and you can take ToP first.
Adnan Aziz,
, 1-(512) 475-9774, ACES 6.120, Office hours M 9-10 W 10-11