| When | Mondays and Wednesdays at 1:00pm-2:00pm from January 14 through March 7 |
| Where | ECJ 1.204 |
| Web | http://www.cs.utexas.edu/~cdunham/cs105/ |
| Instructor | Curtis Dunham |
| Office hours | by appointment only |
| cdunham at cs.utexas.edu (Please include cs105 in the subject) | |
| Prerequisites | CS 307, 313E, or EE 422C (or 322C) with a grade of at least C- |
Perl is a programming language that combines the modern robustness of Java with the expedient pragmatism of scripting languages. It offers both the low-level system access of C and the high-level elegance of Lisp. One of its mottoes is, “There’s More Than One Way To Do It.” Its flexibility makes Perl a powerful tool, but its permissiveness can lead to incomprehensible code or mysterious bugs.
This course provides a brief introduction to the language for students who want to add Perl to their toolbox. It assumes familiarity with the fundamental elements of computer programming, but no prior experience with Perl or any other particular language is necessary. Brief weekly assignments will give students hands-on experience writing, debugging, and revising Perl programs. A final project will exercise students' ability to develop a slightly more involved program, integrating concepts familiar from the weekly assignments.
No textbook is required. All assignments should be possible to complete using only the lecture notes and the Perl documentation that it specifically mentions. The perl man page is a great place to start.
However, to get the most out of this course and Perl itself, a book is a great investment. A very good (and free on the web in PDF) resource is chromatic's Modern Perl. After this course is over and you still like and/or want to use Perl, I highly recommend Effective Perl Programming by Joseph N. Hall, et al. as well as books by Damian Conway and Mark Jason Dominus.
If you find yourself wanting more examples or explanations, I highly recommend purchasing a book!
| Lecture | Day | Date | Topic |
|---|---|---|---|
| 1 | Mon | January 14 | Course overview; Survey; Perl introduction; First program |
| 2 | Wed | January 16 | Perl basics: Data types; Variables; Sigils; Defined-ness; Truth; Control flow |
| Mon | January 21 | Martin Luther King, Jr. holiday - no class | |
| 3 | Wed | January 23 | Perl basics: I/O; Context; String literals and quoting; Lists; Intermediate iteration |
| 4 | Mon | January 28 | Intermediate file I/O, array and hash manipulation; Special variables |
| 5 | Wed | January 30 | Advanced iteration; other print functions; Variable scoping; Functions |
| 6 | Mon | February 4 | Perl warning modes; Introduction to Regular Expressions; Basis in Automata |
| 7 | Wed | February 6 | Regular expressions: Operators, Metacharacters, Character classes, basic assertions |
| 8 | Mon | February 11 | Practical regular expressions; Advanced regular expressions |
| 9 | Wed | February 13 | References; Data structures |
| 10 | Mon | February 18 | Using modules and objects; Packages; Object-Oriented theory |
| 11 | Wed | February 20 | Tied variables; some real-world examples |
| 12 | Mon | February 25 | Miscellaneous helpful things |
| 13 | Wed | February 27 | More helpful things |
| 14 | Mon | March 4 | discussion of final; catch-up and/or discussion/demonstration of practical issues |
| 15 | Wed | March 6 | Looking ahead: Perl 6 |
| Tue | April 2 | final project due at 12 noon, no late turn-in |
The instructor reserves the right to adjust this schedule if necessary.