CMSC 122
Intro to Programming via the Web

12/14/17   Final exam grades are now visible on the grades server. Course grades (letter grades) will be computed and posted on the grades server tomorrow (Friday).

12/06/17   Final Exam Information: The final exam is on Wednesday 12/13 from 4:00PM to 6:00PM. You must bring a photo ID to the final exam. Please plan to arrive 10 minutes early so that we can get situated and begin on time. Rooms are being assigned based on your last name. We will be checking IDs at the door, and if you arrive at the wrong room you will be sent away. Please check the table below carefully for your room assignment.
First letter of last name Room Assignment
A through N PHY 1412
O through Z SPH 1312

11/17/17   Project #5 has been posted. The project requires you to separate your Javascript functions from your HTML, which I have not explained in class yet, but will be covering on Monday 11/27. In order to get you started on it right away, I posted a zip file that contains a bit of the project already implemented. (It contains the code that is necessary for separating the Javascript into a separate file.)

11/17/17   Exam #2 is on Monday 11/20. Please be sure to arrive on time and bring pencils (not pens) to write with. I have prepared a brief study guide that lists the major topics that you are responsible for on this exam.

11/04/17   If you'd like to try some more examples of functions that work with arrays, here is a handout.

11/01/17   Project #4 has been posted.

10/18/17   Project #3 has been posted! This project is conceptually more difficult than the previous ones, so please get started right away.

10/17/17   If you have a laptop, please bring it to class tomorrow (Wednesday). We will be having an in-class exercise to practice loops.

10/12/17   The Term Paper assignment has been posted.

10/07/17   Our first exam is on Monday 10/09. Be sure to arrive on time and to bring pencils with working erasers! You must take the exam during the section for which you are registered. Students who take the exam at the wrong time will be subject to a large point deduction.

10/04/17   Our first exam is on Monday of next week. Here is a list of topics which you should be sure to study.

10/02/17   I found a workaround that will allow us to easily generate output with Javascript directly on the webpage without using "innerHTML". I'll explain on Wednesday. In the meantime, please go to Komodo Edit and select "Preferences" from the menu. Click on "Syntax Checking". Then select "Javascript" from the dropdown list called "language". Finally, go down to the box that says "JSHint options" and add "evil=true" to what is already there (without the quotes). No joke, evil=true. If you're curious what's going on with this.... do a google search for "eval is evil" -- it's technical and a bit controversial! We're not going to do anything "evil" or even careless, so don't worry.

09/28/17   Pat's office hours on Monday 10/9 are being moved to 1:00PM to 3:00PM. (He will be leaving the office hour room at 3:00PM). This is just for this day, not for Mondays in the future.

09/28/17   Project #2 has been posted! This project will take a significant amount of time, so get started right away!

09/23/17   Attention Mac users: If you are using the Safari browser, you may find that it is not uploading files successfully to the HTML validator! It appears to be uploading an empty file instead of the file you have specified. If this happens, you'll get three errors that look like this screenshot. What can you do about it? Install a browser that works! I strongly recommend installing and using Google Chrome.

09/22/17   A list of topics to study for Quiz #2 (which is on Wednesday) is here.

09/21/17   Regarding photos in the project: If your photos are being displayed "sideways" (rotated 90 degrees from how they appear in other applications) it is due to the presence of EXIF data recorded with the photo that "suggests" a proper orientation. Most browsers ignore this information. I suggest removing the EXIF data from the photo and then using a photo editing tool to rotate the photo, as needed. Here is an online tool that you can use to remove the EXIF data from a photo.

09/12/17   Project #1 has been posted. You will find a link to the project description under the "Assignments" tab, above. This project will take a significant amount of time, so get started right away!

09/08/17   Amin's office hour on Wednesday 9/13 from 11 to 12 is cancelled for next week. He will still be there from 10 to 11, but not from 11 to 12.

09/01/17   If you have a laptop, please install Komodo Edit on it (available under the "Resources" tab), and bring it to class on Wednesday, 9/6. We will be doing an in-class exercise.

08/25/17   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 very strictly.

08/25/17   Welcome to CMSC 122 for the Fall 2017 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

There is no required textbook for this course and no assignments will refer to a textbook.

The web is full of useful information that can help you learn the material we will be covering, and we will suggest many (free) web resources as references as we go along. For students who like having a textbook as a secondary source of explanations and for practice problems, we recommend those listed below. Older editions of these books are just as useful as the newest editions, and there are many vendors selling these materials online for reasonable prices.

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 student's computer.

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

Course Grades

Final grades will be computed according the following weights.

35% Projects
8% Research Paper
10% Quizzes (Some Pop Quizzes)
12% Midterm #1
12% Midterm #2
23% 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. We will not accept written assignments via email.

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.

Online Posting of Project Implementations Not Allowed

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
It is also the student's responsibility to inform the instructor of any intended absences from exams for religious observances in advance. Notice should be provided as soon as possible but no later than one week prior to the exam.

Academic Honesty

Note that academic dishonesty 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 pursued to the fullest extent possible as stipulated by the Office of Student Conduct. Without exception every case of suspec\ ted academic dishonesty will be referred to the Office. 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 TA or the course coordinator.

The University of Maryland, College Park has a nationally recognized Code of Academic Integrity, administered by the Student Honor Council.B This code sets standards for academic integrity at Maryland for all undergraduate and graduate students. As a student you are responsible for upholding these standards for this course. It is very important for you to be aware of the consequences of cheating, fabrication, facilitation, and plagiarism. For more information on the Code of Academic Integrity or the Student Honor Council, please visit

Examples of Academic Integrity Violations

The following are examples of academic integrity violations:

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.

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 Accessibility and Disability Service (ADS) 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 at least four days before the date on which the exam will be taken. Exams scheduled through the ADS testing center must be scheduled for a time that overlaps with the student's actual class time. You may not schedule the exam for an alternate date or time.
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
Lecture Slides
Coding Examples
Week 2
Labor Day Holiday (No Class) HTML validation, practice session
Lecture Slides
Comments, attributes, lists, links, etc.
Lecture Slides
Coding Examples
Week 3
Last day for schedule adjustment (drop/add)
Images, tables, block vs. inline elements
Lecture Slides
Coding Examples
Practice Session
Lecture Slides
Coding Examples
Quiz #1
Intro to CSS
Lecture Slides
Coding Examples
Week 4
CSS Children, parent, descendants; colors; size units; comments; selectors (universal, id)
Lecture Slides
Coding Examples
Class selectors; pseudo-classes
Lecture Slides
Coding Examples
Borders, box model, fonts, backgrounds, positioning
Lecture Slides
Coding Examples
Week 5
Practice session (CSS)
Lecture Slides
Quiz #2
Research on the web; Validity of web resources
Lecture Slides
Intro to JavaScript; output, comments, strings, variables, user input (prompt), variable names
Lecture Slides
Coding Examples
Week 6
Type conversions, Math functions, comparison operators, boolean variables, if statements
Lecture Slides
Coding Examples
More if and if/else statements
Lecture Slides
Coding Example
Review for midterm
Week 7
Midterm #1 Return and go over Midterm; Error console in Chrome
Lecture Slides
While loops; nested loops
Lecture Slides
Coding Examples
Week 8
Javascript comments, Do-while loops, Intro to functions
Lecture Slides
Coding Examples
Practice session
More functions, parameters, return values
Lecture Slides
Coding Examples
Week 9
Local vs. global variables, Event driven programming, Javascript events and event handlers, dynamically updating HTML elements
Lecture Slides
Coding Examples
Another dynamic example; "Pausing" with setTimeout; for-loops
Lecture Slides
Coding Examples
Quiz #3
Lecture Slides
Coding Examples
Week 10
Practice Session (Event driven programming; dynamic updates)
Lecture Slides
Modifying arrays;
Lecture Slides
Coding Examples
Practice with arrays
Lecture Slides
Coding Examples
Week 11
Last day to Withdraw from a course.
Forms: buttons, text boxes
Lecture Slides
Coding Examples
More forms: Multi-line text boxes, checkboxes, radio buttons, selection boxes,
Lecture Slides
Coding Examples

Labels, Fieldset, Legend, Client-side form submission, get vs. post
Quiz #4
Lecture Slides
Coding Example

Week 12
Practice session
Two-dimensional arrays
Lecture Slides
Coding Examples
Review for Midterm
Lecture Slides
Week 13
Midterm #2 Thanksgiving Break (No class)
Week 14
Go over Midterm; more 2-dimensional arrays
Lecture Slides
Coding Examples
Begin recursion
Lecture Slides
Coding Examples
More recursion.
Lecture Slides
Coding Examples
Week 15
Separating Javscript from HTML; Continue recursion
Lecture Slides
Coding Examples
Rounding errors
Quiz #5
Lecture Slides
Coding Examples
Increment/decrement; variations on assignment; break/continue
Lecture Slides
Coding Examples
Week 16
Review for final
Lecture Slides
Final Exam

Fawzi Emad
Office: 3265 A.V. Williams
Office Hours: Mon 2-3, Wed 2-3, Fri 3-4

Teaching Assistants
 EmailOffice Hours
Ioana Bercea (See table below)
Amin Ghiasi (See table below)
Rangfu Hu (See table below)
Pattara Sukprasert (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 - 10:00 Ioana     Rangfu Rangfu
10:00 - 11:00 Ioana Pat Amin Rangfu Rangfu
11:00 - 12:00   Pat Amin    
12:00 - 1:00       Amin  
1:00 - 2:00       Amin  
2:00 - 3:00 Pat   Ioana    
3:00 - 4:00 Pat   Ioana    
Online Course Tools

Programming Resources

File Transfer Client

Online Tutorials
Term Assignments
Assignment Due Date
Term Paper Wednesday 11/15, at the beginning of class

Focused Projects
Assignment Due Date
"My Life" Web Site Wednesday 09/27/15, 11:00PM
"My Major" Page (HTML & CSS) Thursday 10/12/15, 11:00PM
Fun With Loops Wednesday 11/01, 11:00PM
Hidden Turkey Game Thursday 11/16, 11:00PM
Country Names Wednesday 12/06, 11:00PM

Web Accessibility