CS 105 Computer Programming: Perl
Spring 2014 (unique # 53483)

When Mondays and Wednesdays at 2:00pm-3:00pm from January 13 through March 5
Where GDC 4.302
Web http://www.cs.utexas.edu/~nclement/cs105/
Instructor Nathan Clement
Office hours by appointment only
E-mail nclement 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-

Course Objectives

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.

Textbook

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!

Lectures

Students are encouraged to attend every lecture. While poor attendence does not guarantee poor grades, regular attendence is highly correlated with good grades. Any lecture slides or code samples presented in class will be posted to Blackboard, unless they are homework solutions. Assignments will be announced in class but not through Blackboard, unless you configure Blackboard to send notifications about new assignments.

Office Hours

Office hours will be held by appointment only, for the convenience of both student and instructor. Email me to set up a time to meet. I am also happy to answer your questions by email (which I will try to answer as promptly as possible), but realize that your quickest method of response might be through Piazza.

Homework

Seven weekly homeworks will be assigned, typically in Wednesday classes and due the following Wednesday. All homeworks are due at 12 noon (two hours before classtime) on the due date. Homework can be turned in up to 12 hours late (midnight) for half credit. Homework will be submitted using the turnin program from a CS account (run man turnin on a CS machine for more details). Do not use the Microlab Turnin web page. You need to get a CS account if you don't yet have one. The instructor will run your programs on a CS machine with Perl 5.14.2. I recommend SSH for remote login since your Perl experience will be text-centric.

Grading

The grading distribution will be 70% homeworks and 30% final project. Since there are 7 homeworks, each will be worth 10% of your final grade. The final project will serve as a final exam. Note that it will be due after the class stops meeting on March 6, but you can still make an appointment for office hours up to that point. Grades will be posted on Blackboard. The instructor reserves the right to use attendance and class participation to improve your final letter grade if you are “on the fence.” Any questions about grades must be submitted in writing (e-mail is okay).

Class Announcements and Discussion

The instructor will send class announcements through Piazza.

Piazza can also be used as a Discussion Board so students can help each other. Appropriate discussion topics include questions about Perl itself, requests for clarification about anything said in class, requests for help with the computing environment, etc. In general, the discussion board is for sharing information that may be of interest to classmates, but obviously homework solutions are off-limits!

Code of Conduct

See the Computer Science Department's Code of Conduct. Students are encouraged to work together to improve their understanding of the course material, but for all homework assignments, only their own work may be submitted. University policies on academic dishonesty will be strictly enforced.

Schedule

LectureDayDateTopicDue
1 Mon January 13 Course overview; Survey; Perl introduction; First program
2 Wed January 15 Perl basics: Data types; Variables; Sigils; Defined-ness; Truth; Control flow
Mon January 20 Martin Luther King, Jr. holiday - no class
3 Wed January 22 Perl basics: Context; String literals and quoting; Lists; Intermediate iteration; I/O Assignment 1
4 Mon January 27 Intermediate file I/O, array and hash manipulation; Special variables
5 Wed January 29 Advanced iteration; other print functions; Variable scoping Assignment 2
6 Mon February 3 Functions; Perl warning modes; Introduction to Regular Expressions; Basis in Automata
7 Wed February 5 Regular expressions: Operators, Metacharacters, Character classes, basic assertions Assignment 3
8 Mon February 10 Practical regular expressions; Advanced regular expressions
9 Wed February 12 References; Data structures Assignment 4
10 Mon February 17 Using modules and objects; Packages; Object-Oriented theory
11 Wed February 19 Tied variables; some real-world examples Assignment 5
12 Mon February 24 Perl CGI Introduction
13 Wed February 26 Perl DBI Assignment 6
14 Mon March 3 discussion of final; catch-up and/or discussion/demonstration of practical issues
15 Wed March 5 Looking ahead: Perl 6 Assignment 7
  Wed April 2 final project due at 12 noon, no late turn-in Final Project

The instructor reserves the right to adjust this schedule if necessary.