CSci 1101: Dynamic Web Programming -- Syllabus.

[Home] [Syllabus] [Assignments] [Resources] [Course blog]


The syllabus will be updated throughout the semester. Dates, topics, assigned reading, and problem set due dates will be added or might change. All changes in assigned reading and due dates will be announced in class (and occasionally by e-mail). While I will do my best to update the web site accordingly, it is a student's responsibility to keep track of the problem set due dates and reading assignments. If you are not sure about due dates, please don't hesitate to ask.

Reading assignments are listed for the day when the material is first explained in class. You may read the material ahead of the lecture or after, either way is fine.

Policies on Collaboration and Use of Resources

Problem sets and labs are individual work, unless otherwise stated. While it's perfectly OK (and is encouraged) to discuss the problem sets in general terms with others in the class, your solution must be your own work. Copying any part of another person's solution (even if you modify the code) is considered academic dishonesty and will be dealt with according to the university's policy.

It is OK to use code (html, css, php, and SQL) found in a textbook or online, but such use must be credited (i.e. you have to state the exact source of the code and clearly explain how this code was used). Failure to credit the source constitutes academic dishonesty.

You may, and often should, use code from lecture notes or samples from the book as a starting point of your code. However, using large chunks of code "as is" (even with a proper credit) may significantly reduce your grade if your own contribution was small. If in doubt about what materials are appropriate to use and how, please ask the instructor.

Project work is done in groups. Members of the same group have free access to each other's code (and are encouraged to pair-program). Make sure to document contributions of each team member (in comments in the code or in a separate file). This will help me to properly grade your work in case the contributions of the team members where uneven. Communications with anyone outside of your group are limited to general discussion only, no code should be shared between groups.

Assignment deadlines and late policies. Problem sets and labs are submitted by uploading them to the server. Do not change your work after the deadline: I check the last modification time to determine whether the work was submitted on time. For project assignments you also need to send me an e-mail when you are finished.

If you cannot finish the work on time, please get in touch with me by e-mail. Generally your work will be subject to late penalty (see below), but I am open to discussion of extensions if you have made a good progress on your assignment and have a concrete timeline for finishing it.

If a problem set is submitted late, credit may be deducted: if it is submitted before the next class meeting after the due date, it is graded out of 3/4 credit. After that it is graded out of 1/2 credit.

Keeping up with assignments is extremely important for success in this class. Don't get stuck - ask questions! If you feel that you are falling behind, you should talk to me to come up with a strategy to catch up and allocate time to work on the material.

Reading assignments

Reading assignments are posted for the day when the topic starts in class. The textbooks should also be used as a reference for problem sets and for project work.


There will be two in-class exams in this course. The exam dates are set. If you have an unavoidable time conflict with the exam time, please let me know right away.

Exams are open book, open notes. You may use the text books, your own notes, and code samples that you find helpful. If you would like to use a different text book on the test, please let me know ahead of time (please bring a copy) and I'll let you know if it it's OK.

Reading abbreviations in the syllabus:

HTML HTML & XHTML: The Definitive Guide, Sixth Edition by Chuck Musciano, Bill Kennedy
PHP Web Database Applications with PHP & MySQL, 2nd Edition by Hugh E. Williams, David Lane

Course topics and timeline

Tuesday Thursday
Week 1: January 19 - 22
Course overview. Basics of client/server model.
Reading: HTML Ch. 1, PHP Ch. 1
Problem set 0, due Tuesday January 26: please write a short post about yourself on the course blog
Overview of HTML and CSS.
Reading: HTML Ch. 2.1 - 2.10, 3.1 - 3.8, 4.1 - 4.10, 5.1 - 5.3, 6.1 - 6.4, 7.1 - 7.4, 10.1 - 10. 2. or equivalent resources
Week 2: January 25 - 29
Lab: Formatting HTML with CSS.
Reading: HTML Ch. 8
Problem set 0 due
Introduction to PHP, server-side processing, interleaving HTML and PHP.
Reading: PHP Ch. 2 pp. 16 - 28.
Problem set 1 posted: HTML, CSS. Due Thursday, Feb. 11
Week 3: February 1 - 5
PHP variables. Numbers and strings.
Pair-programming, code sharing, and documentation.
Lab on CSS.
Project assignment 1 posted: CSS and XHTML for the project pages. Due Tuesday, Feb 16
Week 4: February 8 - 12
Intro to PHP; PHP variables. Reading: PHP Ch. 2 pp. 28-33.
Problem set 2 posted: basics of PHP. Due Tuesday, Feb 16.
PHP conditionals. Booleans.
Lab on PHP. Problem set 1 due
Week 5: February 15 - 19
Loops and arrays.
Reading: PHP Ch. 2 pp. 33 - 36, Ch. 3 pp. 57 - 76.
Problem set 2 due
Project assignment 1 due
Problem set 3 posted: PHP conditionals. Due Tuesday, February 23.
Lab on loops and arrays.
Problem set 4 posted: PHP loops and arrays. Due Thursday, February 25.
Project assignment 2 posted: displaying blog entries using arrays. Due Tuesday, March 2.
Week 6: February 22 - 26
Functions, global variables, static variables.
Reading: PHP Ch. 2 (till the end)
Code style and code refactoring.
Problem set 3 due
Databases and SQL.
PHP database functions.
Reading: PHP Ch. 5, Ch. 6 172- 188, 208 - 219
Problem set 4 due
Week 7: March 1 - 5
More operations with PHP strings; dates and times.
Reading: PHP Ch. 3 76 - 87, 97 - 103.
Project assignment 2 due
Project assignment 3 posted: displaying blog entries using a database. Due Thursday, March 25
Review for the midterm.
Week 8: March 8 - 12
Midterm I
Project work in the lab.
March 15 - 19: Spring break, no classes
Week 9: March 22 - 26
HTML forms. Server-side form processing.
Reading: HTML Ch. 9, PHP Ch. 6 188- 208
Validating form data (server side).
Writing PHP code in multiple files.
Reading: PHP Ch. 9 287 - 307, Ch. 2 51 - 53
Project assignment 3 due
Project assignment 4 posted: handling user requests, posting a message, commenting. Due Thursday, April 8.
Week 10: March 29 - April 2
Storing data in a database.
Handling errors.
Reading: PHP Ch. 8
Sessions and mechanisms for implementing them. PHP support for sessions.
Reading: PHP Ch. 10
Week 11: April 5 - 9
Project work in the lab.
Session variables.
Project assignment 4 due
Project assignment 5 posted: user login, sessions, comments threads. Due Tuesday, April 27.
Week 12: April 12 - 16
Recursion; implementing comments threads.
Reading: TBA.
Project work in the lab.
Week 13: April 19 - 23
Data sanitizing and filtering. Recursion.
Week 14: April 26 - 30
Review for the midterm II. Midterm II.
Week 15: May 3 - 7
Sessions and mechanisms for implementing them. PHP support for sessions.
Reading: PHP Ch. 10
Security and encryption.
PHP authentication.
Reading: PHP Ch. 11.
Wrap up.
Project presentations Monday 4pm (during the scheduled final's time), Sci 1030.
Finished projects due on Thursday, May 13th at 11:59pm.