CMSC 122
Intro to Programming via the Web

05/08/14   Term Project reminder: Be sure to include the file "improvements.html" with your project submission. Be sure to spell the name correctly (all lower-case letters). This file will ensure that we will give you credit for all of the work you have done for phase III, so it is very important. If you don't include this file, you may get 0 points. Make sure your improvements.html file has the same format and the same three sections shown in this example.

04/29/14   The final exam will be on Thursday 5/15 from 4:00PM to 6:00PM in room BRB 1101. (BRB is the Biosciences Research Building.) Please arrive 10 minutes early so that we can get started at 4:00PM sharp.

04/25/14   I made a mistake and included a few questions on the midterm that were covered on Monday, but I promised not to include that material. Those questions will not be counted while we are grading this exam. (There were three of these questions, all on page 4.)

04/24/14   For anyone who is using multiple photos in the Term Project but is concerned about the file size limit for submission: I found a cool utility online that resizes photos and allows you to save them with "lower quality", which makes the file size a lot smaller. It has default sizes that are limited, but note that there is a small (hard to see) link that says "More options", which will allow you to resize the photo to any size you want. The utlity is here.

04/24/14   Please don't forget that tomorrow (Friday) is the second midterm. Be sure to arrive on time, and bring pencil(s) with working eraser(s).

04/24/14   Solutions to Quiz#4 are now available. Version #1 is here and version #2 is here.

04/19/14   Phase III of the Term Project has been assigned! All of your peer reviews should be in by 11:00PM tonight, so please wait until then to begin. Please read the specification (in the "Assignments" section) carefully.

04/17/14   Since Friday is a holiday for many students, and Monday is a holiday for many other students, you can either take Quiz #4 this week, or take an alternate version of the quiz on Wednesday 4/23.

04/16/14   Please bring laptops to class on Friday for an in-class exercise. Also, don't forget we have a quiz that day, so study arrays, loops, and functions.

04/15/14   Here is a link to some additional exercises on arrays. These are not being graded or collected, but we are providing them in case you want more practice problems.

04/12/14   Phase II of the Term Project is ready! Note that you have just 1 week to complete this part, so get going. Be sure to read the instructions (available in the "Assignments" section of this webpage) before attempting to review other students' code!

04/12/14   Final submissions for Phase I are here. (Use login ID "student" and password "student").

04/11/14   The projects have been uploaded to the web server again. All submissions before 6:45PM today are included. If you submitted a project after that, you'll have to wait until Saturday morning to try your project on the web server. Here is the link to the projects. Use login ID "student" and password "student".

04/10/14   IMPORTANT: Phase I is complete, but some of you didn't follow instructions! I am extending the deadline to Friday 4/11 at 11:00PM so that you can fix problems. You can view all of the projects (including your own) by following the link below. (Use the login ID "student" and the password "student".) If your project doesn't come up, or it doesn't look right, it is probably because you didn't follow instructions carefully. See this page for some hints about where you might have gone wrong. Some of the projects are REALLY GREAT!!! I'm impressed. This is the link to the projects.

04/09/14   Phase I of the Term Project is due this evening. Please note that there is a limit to the size of the zip file you are submitting! Please keep it under 8MB. You may need to reduce the size of your photos or other media in order to stay under this limit.

04/09/14   Please bring laptops to class on Friday 4/10!

04/08/14   Quiz #4 has been moved to Friday 4/18.

04/03/14   Please bring laptops to class on Monday for an in-class exercise.

04/03/14   The term paper is due on Wednesday 4/30. (There was an ambiguous date set previously as Wednesday 4/28, which does not exist!)

03/25/14   Please bring laptops to class on Friday. Note that there is also a quiz that day.

03/16/14   The "Term Paper" has been assigned. Please do not confuse the "Term Paper" with the "Term Project". Although the due date for the paper is far off, please bear in mind that you will have a large number of assignments due in the latter portion of the course (as well as a midterm and a final exam), so it would be wise to finish the term paper well before the deadline.

03/12/14   Phase I of the Term Project has been posted. This assignment is worth a large portion of your course grade, so start early and spend a lot of time on it.

03/05/14   The date of the midterm exam has not changed... The midterm will be during class on Friday 3/7. Be sure to arrive on time, and bring pencils and functional erasers.

03/05/14   Project #2 hint: If you are having trouble getting an element to align either at the top or the bottom of its container, you might try setting the "vertical-align" property instead of adjusting margins/borders.

03/01/14   If you have a laptop, please bring it to class on Monday!

02/23/14   Project #2 has been posted. This project will take quite a bit of time, so please start immediately!

02/23/14   A few students have submitted EMPTY zip files for project #1. As mentioned in the project description, it is your responsibilty to verify that your submission contains the right files. We will not grant extensions to students who have submitted empty project implementations. Please verify your submission by downloading it from the submit server!

02/19/14   Friday's quiz will not include material that was presented in today's lecture.

02/17/14   Please bring laptops to class on Friday for an in-class practice session.

02/17/14   IMPORTANT: Due to the snow day, the dates for quizzes and midterms have changed. Please click the "Schedule" tab to see the correct dates.

02/09/14   Project #1 has been posted. To view the project description, click the "Assignments" tab, above. We will talk about how to download, work on, and submit the project during Monday's lecture.

02/04/14   Please bring your laptops to class again on Friday!

01/31/14   If you have a laptop, please bring it to class on Monday so that you can work on an in-class exercise. If possible, please install two things on your machine in advance: Komodo Edit, and one of the file transfer clients. Click the "Resources" tab, above, for links to both of these tools.

01/21/14   All students are required to attend the lecture for which they are registered. Sorry, but the course is quite full, so we will be adhering to this policy.

01/21/14   Welcome to CMSC 122 for the Spring 2014 Semester. Important announcements will appear here as the semester goes on. Be sure to look every day.

Welcome to CMSC 122. This course provides an introduction to the internet/web capabilities and trends, and to computer programming in the context of building simple web pages. Intended for students with no previous programming experience who wish to understand the technologies making web sites possible, this course will provide a set of practical problem solving skills necessary for the development of dynamic client-side web content. This class provides non-majors with a basic skill set for leveraging web technologies and limits of such resources.

Topical Content
  • History of the Web/Internet
  • Internet and Society
  • Web/Internet Fundamentals
  • HTML/CSS for dynamic web sites
  • Web authoring tools
  • Design (pseudocode)
  • Input/Output/Expressions in JavaScript
  • Conditional/Iteration Statements in JavaScript
  • Testing/Debugging
  • Aggregate types in JavaScript
  • Web Page Evaluation
  • Research-Quality Web Searching
  • Basics of usability and art theory in web page design
  • Basics of e-commerce and tool integration in the web

Fawzi Emad

Recommended Textbooks
Title Authors ISBN
JavaScript: A Beginner's Guide, Second Edition John Pollack 9780071809375
HTML and XHTML Pocket Reference Jennifer Niederst Robbins 9781449363352
CSS Pocket Reference (Any Edition) Eric A. Meyer 9781449399030

Textbook Notes:

  • The books listed here are recommended not required.
  • A textbook may be available as an eBook (EBK). This version is the actual text, costs less than the text,and is available for 180 days. It is downloaded directly to the students computer and sent via email.

Course Grades

Final grades will be computed according the following weights.

40% Projects
8% Research Paper (8-10 pages)
10% Quizzes (Some Pop Quizzes)
11% Midterm #1
11% Midterm #2
20% Final Exam

Due dates

Programming Projects

The due dates for these assignments are rigid. Programming assignments will be due at 11:00PM on the date specified at the top of the project description. You may submit a programming assignment up to 24 hours after the due date, but you will be penalized 20 points (we will subtract 20 points from your total). No assignments will be accepted after the late deadline. Exceptional circumstances will be considered only if discussed with the instructor before the assignment is due. These assignments are to be submitted electronically according to the instructions provided in the project description. We will not accept programming assignments via email.

Written Assignments

Assignments that are to be handed in on paper will be due at the beginning of class. These assignments will not be accepted after the due date unless there are very extraordinary circumstances.

Project Implementation
Projects in this class must be completed individually and collaboration is not permitted. All assignments can be done on the machine of your choice. You are welcome to do the work on a home computer if you have one. There should not be any machine-specific dependencies in your code. However, if we are not able to run your program because there is a difference between your and our computer environments, you must work with us to get your program to work in our environment.

Class Announcements

You are responsible for reading the class announcements that are posted on this webpage often (at least once a day). Important information about the course (e.g., deadlines, project updates, etc.) will be posted in this section.

Excused Absences
  1. Any student who needs to be excused for an absence from a single class session , due to a medically necessitated absence shall:
    • Make a reasonable attempt to inform the instructor of his/her illness prior to the class. If you are going to miss an in-class assignment then we expect to hear from you (either email or a telephone message) before the class session begins.
    • Upon returning to the class, present their instructor with a self-signed note attesting to the date of their illness. The note must contain an acknowledgment by the student that the information provided is true and correct. Providing false information to University officials is prohibited under Part 9(h) of the Code of Student Conduct (V-1.00(B) University of Maryland Code of Student Conduct) and will result in disciplinary action.
    • This self-documentation may not be used for the Major Scheduled Grading Events as defined below and it may only be used for 1 class meeting during the course.

  2. Any student who needs to be excused for more than one absence, or for a "Major Scheduled Grading Event", must provide written documentation of the illness from the Health Center or from an outside health care provider. This documentation must verify dates of treatment and indicate the timeframe that the student was unable to meet academic responsibilities. The documentation should be given to the instructor, not the TA. We will not accept a "self-signed" note for "major scheduled grading events", as defined below, nor for multiple absences. The note must be signed by a health care professional.

    The Major Scheduled Grading Events for this course include:
    • Midterm #1
    • Midterm #2
    • Final Exam
    • Programming Projects
    • Research Paper

Academic Honesty
All assignments/exams must be done individually. Please visit the webpage of the Student Honor Council for a detailed explanation of what constitutes academic dishonesty. Note that it includes not only cheating, fabrication, and plagiarism, but also includes helping other students commit acts of academic dishonesty by allowing them to obtain copies of your work. You are allowed to use the Web for reference purposes, but you may not copy code from any website or any other source. In short, all submitted work must be your own.

Cases of academic dishonesty will be dealt with harshly. Each such case will be referred to the University's Office of Judicial Programs. If the student is found to be responsible of academic dishonesty, the typical sanction results in a special grade "XF", indicating that the course was failed due to academic dishonesty. More serious instances can result in expulsion from the university. If you have any doubt as to whether an act of yours might constitute academic dishonesty, please contact your instructor.

Course Evaluations
Your participation in the evaluation of courses through CourseEvalUM is a responsibility you hold as a student member of our academic community. Your feedback is confidential and important to the improvement of teaching and learning at the University as well as to the tenure and promotion process. Please go directly to the website ( to complete your evaluations. By completing all of your evaluations each semester, you will have the privilege of accessing online, at Testudo, the evaluation reports for the thousands of courses for which 70% or more students submitted their evaluations.

You can find more information, including periodic updates, at the IRPA course evaluation web site

Disability Support Services
Any student eligible for and requesting reasonable academic accommodations due to a disability is requested to provide, to the instructor in office hours, a letter of accommodation from the Office of Disability Support Services (DSS) within the first two weeks of the semester. If special accommodations are to be given for any exam, then the student is also required to schedule the exam and provide to the instructor (before/after class) the form that specifies the scheduled time and date of the requested accommodation. This form must be provided at least four days before the exam. Please note that the time/date of the scheduled exam must overlap with the time/date of the regular in-class exam. You may not schedule the exam at an alternate time or date.
Exam Dates:

Lecture Schedule (Approximate):
Week 1
Course overview, Intro to Networks
Lecture Slides
Servers, World Wide Web, DNS
Lecture Slides
URL's, HTML, tags, validation
Lecture Slides
Week 2
HTML Examples, practice session, Quiz #1
Lecture Slides
Coding Examples
Comments, attributes, lists, links, etc.
Lecture Slides
Coding Examples
Last day for schedule adjustment
Images, Practice session
Lecture Slides
Coding Examples
Week 3
Tables, block vs. inline elements, intro to CSS
Lecture Slides
Coding Examples
CSS syntax, colors, size units
Lecture Slides
Coding Examples
Snow daySnow Day
Week 4
Children, parent, descendants; comments; selectors
Lecture Slides
Coding Examples
Pseudo-classes, box model, fonts, backgrounds, Fun with Text
Lecture Slides
Coding Examples
Practice Session
Quiz #2
Lecture Slides
Week 5
Intro to JavaScript; output, comments, strings, variables
Lecture Slides
Coding Examples
Input (prompt), variable names, type conversions, math functions
Lecture Slides
Coding Examples
Comparison operators, boolean variables, if and if/else statements, logical operators
Lecture Slides
Coding Examples
Week 6
Snow daySnow Day Review for Midterm
Lecture Slides
Coding Examples
Midterm #1
Week 7
Measuring and Improving "Usability"
Lecture Slides
Return and go over Midterm
Intro to Color Theory
Lecture Slides
Week 8
Spring Break Spring Break Spring Break
Week 9
While loops
Lecture Slides
Coding Examples
Nested quotes, Nested loops, Do-while loops
Lecture Slides
Coding Examples
More do-while loops, Practice session (guessing game)
Quiz #3
Lecture Slides
Coding Examples
Week 10
Functions, parameters
Lecture Slides
Coding Examples
Return values, local vs. global variables, dynamically updating HTML elements
Lecture Slides
Coding Examples
Another dynamic example; Event Driven Programming; Javscript Events
Lecture Slides
Coding Examples
Week 11
Doing research on the WWW; practice session (Whack-A-Mole)
Lecture Slides
Coding Examples
For-loops, arrays
Lecture Slides
Coding Examples
Practice Session (arrays)
Lecture Slides
Coding Examples
Week 12
Last day to drop with a 'W'
Intro to forms; buttons, text boxes
Lecture Slides
Coding Examples
Forms: Multi-line text box, checkboxes, radio buttons, selection boxes
Lecture Slides
Coding Examples

Practice session (payment calculator)
Quiz #4
Coding Examples

Week 13
Labels, Fieldset, Legend, Client-side form submission, get vs. post, separating JavaScript form HTML
Lecture Slides
Coding Examples
Review for Midterm Midterm #2
Week 14
Large scale software, dramatic softare failures, tips for becoming a better programmer!
Lecture Slides
Go over Midterm Electronic commerce; Starting an online business.
Lecture Slides
Week 15
Rounding errors, 2-dimenensional arrays, increment/decrement operators
Lecture Slides
Coding Examples
Variations on assignment operator, break/continue, intro to Recursion
Lecture Slides
Coding Examples
Continue recursion
Quiz #5
Lecture Slides
Coding Examples
Week 15
Review for Final Exam

Fawzi Emad
Office: 1201 A.V. Williams
Office Hours: MWF 10:00-10:50

Teaching Assistants
 EmailOffice Hours
Mahfuza Sharmin (See table below)
Zhangzheng Xu (See table below)
Konstantinos Zampogiannis (See table below)

TA Office Hours Schedule

All TA office hours take place in room 1112 A.V. Williams. Please note that a TA may need to leave 5 minutes before the end of the hour in order to go to his/her class. Please be understanding of their schedules.

9:00   Mahfuza   Mahfuza  
10:00   Mahfuza   Mahfuza  
11:00   Zhengzheng      
12:00   Zhengzheng      
1:00     Kostas   Kostas
2:00 Zhengzheng   Kostas   Kostas
3:00 Zhengzheng        
Online Course Tools

Programming Resources

File Transfer Clients

Online Tutorials
Term Assignments
Assignment Due Date
Term Paper Wednesday 4/30, at the beginning of class
Term Project Phase I -- Initial Implementation Wednesday 4/9, 11:00PM
Term Project Phase II -- Peer Review Saturday 4/19, 11:00PM
Term Project Phase III -- Revised & Extended Website Saturday 5/10, 11:00PM

Focused Projects
Assignment Due Date
Summer Camp Webpage (HTML) Sunday 02/23/14, 11:00PM
My Major (HTML & CSS) Wednesday 03/12/14, 11:00PM

Web Accessibility