CS 316 is an introduction to the World Wide Web and Web programming. It covers languages and techniques used for Web programming, data transfer over the Internet, and the tools available in the Web environment. Specific subjects include the HTTP protocol, the HTML markup language, browser developer tools, Cascading Style Sheets (CSS), JavaScript, the Common Gateway Interface (CGI), PHP, JavaScript, the Document Object Model (DOM), Asynchronous JavaScript and XML (AJAX), IndexedDB, JavaScript frameworks Bootstrap, jQuery, and React, and a few libraries built on these, such as DataTables. We will also discuss Transport Layer Security (TLS) and security concerns such as SQL injection and cross-site scripting (XSS).
The following Student Learning Outcomes apply to CS316.
This course contributes to the following ABET (Accreditation Board for Engineering and Technology) student outcomes: Communicate effectively in a variety of professional contexts (SO3) and apply computer science theory and software development fundamentals to produce computing-based solutions (SO6).
| Instructor | Raphael Finkel <raphael@cs.uky.edu> |
| Instructor office | Hardymon 230 |
| Grader | Mitchell Klusty <mitchell.klusty@uky.edu> |
| Class | TR 3:30p-4:45p; Zoom (if necessary) 8681 2107 986 |
| Web | http://www.cs.uky.edu/~raphael/courses/CS316.html
|
| Office hours | T 10a-11:30a, R 1p-2:30p, Zoom 581 609 732 or office |
The course assumes a basic
basic level of proficiency in the C, C++, or Python programming language.
Almost all our programming, however, will be in JavaScript, which you will learn
during the semester.
Students should have completed CS 216.
Completion of CS315 is helpful but not required.
More advanced programming skills are good; see
http://www.cs.uky.edu/~raphael/programming.html for a refresher.
The class has five projects.
They involve a significant amount of programming, both in browsers and
in servers. Server programs run on departmental MultiLab computers, which
run Linux. See https://www.cs.uky.edu/docs/users/multilab.html for
details about those computers.
You will be able to build your programs on any computer you like,
but they must run without fault on the MultiLab machines.
Students submit all projects electronically via Canvas.
This course has no required textbooks, but the following is recommended: Randy Connolly and Ricardo Hoar, Fundamentals of Web Development, 3rd Edition, Pearson 2021, ISBN 9780135863336. The previous edition is still good: Fundamentals of Web Development, 2nd Edition, Pearson 2018, ISBN 9780134489193.
The Web has lots of resources for the
subjects of the course, particularly
https://www.w3schools.com.
You might also purchase a reference book, such as
Jon Duckett
Web Design with HTML, CSS, JavaScript and jQuery,
ISBN-13: 978-1118907443.
There will be two exams: an in-class midterm and a final. The final exam will only test material in the course covered after the midterm.
The following is tentative with respect to subjects
| T | R | |
| Jan 11 | 1 | 2 |
| Jan 18 | 3 | 4 |
| Jan 25 | 5 | 6a |
| Feb 1 | 7 | 8 |
| Feb 8 | 9 | 10 |
| Feb 15 | 10 | 12b |
| Feb 22 | 13 | 14 |
| Mar 1 | 15 | m |
| Mar 8 | M | 16c |
| Mar 15 | n | n |
| Mar 22 | 17 | 18 |
| Mar 29 | 19 | 20 |
| Apr 5 | 21 | 22d |
| Apr 12 | 23 | 24 |
| Apr 19 | 25 | 26 |
| Apr 26 | 27e | ng |
| May 3 | f |
| Code | Meaning |
| a-e | Assignment due (Friday, noon) |
| g | Absolute deadline (noon) |
| m | Midterm exam |
| M | Discuss midterm exam |
| n | No class - University holiday |
| f | Final: Tuesday, May 3 1p-3p |
| 1 | Intro, history, structure of Web applications |
| 2 | browsers, URLs, Unix file permissions |
| 3 | HTML tags and attributes, browser developer tools |
| 4 | CSS, responsive web design, media |
| 5 | CGI, input tags, command-line clients |
| 6 | CGI languages |
| 7 | PHP (guest?) |
| 8 | JavaScript and NodeJS |
| 9 | JavaScript and NodeJS |
| 10 | SQL |
| 11 | DOM |
| 12 | HTML scripts |
| 13 | JQuery |
| 14 | JQuery with AJAX |
| 15 | Review for midterm |
| 16 | Post-midterm discussion |
| 17 | Fonts |
| 18 | Bootstrap (grid model, tooltips, progress bars) |
| 19 | Bootstrap (modals) |
| 20 | DataTables |
| 21 | IndexedDB |
| 22 | SVG |
| 23 | React |
| 24 | React |
| 25 | Security: problems |
| 26 | Security: defenses |
| 27 | Review for final |
Students will be graded 50% on projects, 40% on exams (30% on each student's better exam, 10% on the other one), and 10% on attendance. Final grades will be assigned according to the following scale: A=90-100%, B=80-89%, C=70-79%, D=60-69%, E=0-59%. I generally do not give incomplete grades.
Projects are due at noon on the Fridays (not Thursdays) indicated above.
Late projects are penalized 3% (of the total possible points) per day for each day late, not including Saturday, Sunday or holidays (marked n in the schedule). The maximum penalty is 7 days late; after that, one may hand in an assignment and still get 79%. However, the absolute deadline is noon on Thursday of the last week of classes. No extra credit is available on late projects. A student who turns in a project early gains early credits (which also ignore weekends and holidays), which are only used to offset late penalties on other assignments but have no other value.
Attendance is mandatory. If you attend 80% or more of the classes (ignoring classes for which you have an excused absence), you get the full 10 points. If you attend fewer than 80%, you get 0 attendance points. I make reasonable allowances for family emergencies, medical events (suitably documented at Tier 2 or Tier 3), job interviews (with verification) or religious observances (inform me in writing during the first week of class).
Students must use the computing facilities on campus in accordance
with standards of honesty and personal
conduct. Those standards, outlined in the University of Kentucky
Policy governing access to and use of University of Kentucky computing resources ,
available at
https://www.uky.edu/regs/sites/www.uky.edu.regs/files/files/ar/ar10-1.pdf,
call for all members of the community to act in a responsible,
ethical, and professional way.
All academic work, written or otherwise, that you submit must be the result of your own thought, research, or self-expression. You may certainly discuss the assignments with each other, but you must not show each other your work; everyone must develop the assignments completely independently. It is a serious offense to allow other students to copy your work or to copy the work of other students (even if it is in a public computer file or on github based on similar assignments). If you borrow ideas, algorithms, wording, or code from other sources, you must document that fact or you have committed plagiarism. You may not use any code you find on the Internet. If you re-use code you acquired in a previous course, insert a comment indicating what course provided the code. (Some of this text was taken years ago from an online plagiarism guide that I can no longer find.) I punish offenses against this policy quite strictly.
The material in https://www.uky.edu/universitysenate/acadpolicy,
https://www.uky.edu/universitysenate/ao,
https://www.uky.edu/universitysenate/syllabus-dei,
and
https://www.uky.edu/universitysenate/student-resources
is included by reference.