Course Syllabus
Course Syllabus
Instructor: David Johnson, david.e.johnson@utah.edu, office MEB 3146
Lecture: Mon/Wed 11:50a-1:10p in CTIHB 109 (this is a nice lecture hall past the coffee shop in the Tanner Humanities building, which is part of the loop with the student union, GC, and the humanities building).
Testlets: Jan 21, Feb 11, Mar 4, and Mar 25 during the last half of class.
Final Exam: Tuesday, April 28 at 10:30a - 12:30p in the regular classroom.
Activities: Most class periods without a formal test will have a small group activity or worksheet for participation points. These will generally take 10-15 minutes.
See topics under the Course Resources Canvas module for office and TA help hours, information on course communication, and other important topics.
Links to an external site.
About the Course
The goal of this class is to teach you how to develop basic web applications, which means that by the end you will:
- understand the basic front-end and back-end architecture of web applications
- understand how to write HTML and style it with CSS
- understand how to write back-ends using a model-view-controller framework
- understand how to deploy web applications to the cloud
- understand how to set up authentication, authorization, and user roles
This course uses specific popular technologies (Linux, Python, Django, Sqlite, Javascript, AWS) but the skills you gain are intended to apply more generally.
This course is a basic introduction to web development. It builds a foundation for other professional web development skills taught in CS 3540, CS 4550, CS 4560, and CS 6450.
Materials
This course will require you to deploy your web application to a cloud service. This will require the purchase of a domain. Most people are able to do this for free using the GitHub student developer pack. If not that, the specific domain will be up to you, and acceptable domains can be purchased for under $10. Contact the instructor if this charge will be a problem for you. Additionally, misuse or misconfiguration of the cloud service may incur charges. We will teach you what steps are required to avoid charges. Follow those steps diligently.
Assessment
Assignments Web development relies upon a broad array of technologies. The course will start out with largely weekly modules, each of which covers a different area of web development. Associated with these weekly modules are small assignments designed to illustrate some specific idea. Doing these assignments will prepare you for small tests ("testlets"), in-class worksheets, and the final exam. There is a two day late period for each assignment with a 10% penalty per day. Every student gets two late passes to use during the semester. It is not necessary to email the instructor to use a late pass - they just get applied if available. A late pass forgives the one or two day late penalty for one assignment. It does not extend the assignment past the two day late period. Late passes will be automatically applied to late assignments and tracked in the Canvas gradebook. Students cannot decide to shift a late pass from one assignment (for example, where a pass was used on a 24 hour late assignment) to another (a later assignment that was 40 hours late). Assignments later than the two day late period won't be accepted.
Project The course concludes with the development of a more ambitious "full-stack" web application that builds upon all the past material. The application will be deployed to the "cloud". The project will be broken into weekly phases. The same late policy and shared late passes apply to the project phases. The project is cumulative, so it is important to stay current with effort on the project phases.
Testlets There will be four in-class small tests ("testlets") taken during the half of some lectures (see the schedule above). These take the place of a midterm and are used to provide timely feedback about your understanding and progress in the course. One testlet score will be dropped and that is the default process for handling a missed testlet.
Activities There will be numerous in-class activities for credit taking 10-15 minutes per class. Some of these activities will be small-group coding exercises turned in to Gradescope for credit. Others will be very short paper worksheets that are designed to prepare you for the testlets and to help you evaluate your understanding of course material. Three activities will be dropped to accommodate any classes you miss. The dropped activities are the default way of handling a missed in-class activity.
Final Exam The final exam will be a comprehensive, in-class, paper test at the date and time listed above.
Course Grading
The final course grade will use the following weights to calculate a final course percentage.
Weekly Assignments 15%
Project Assignments 10%
Final Exam 20%
Testlets 40%
In-Class Activities 15%
Your weighted, cumulative course percentage score is turned into letter grades using the following scheme:
[100-94] A
(94-90] A-
(90-87] B+
(87-84] B
(84-80] B-
(80-77] C+
(77-74] C
(74-70] C-
(70-67] D+
(67-64] D
(64-60] D-
(60-0] E
where [ ] means including that number and ( ) means up to but not including.
Class Time
This is an in-person class. Your attendance is assumed. The best way to be successful in this course is to allocate set chunks of time to immerse in this material, and the scheduled lectures are a great place to make that happen.
There will be frequent in-class activities that may require a laptop or connected device. Please come prepared to participate.
Disruptive behavior will not be tolerated.
Planned Schedule
The planned schedule of topics for this course is below. It may be adjusted as needed.
| Week | Monday | Wed | Assignment |
| Jan 5 | HTML | Semantics | HTML |
| Jan 11 | CSS | Old Layout | CSS |
| Jan 18 | X | Flex/T1 | |
| Jan 25 | Nested Flex | Responsive | Flex |
| Feb 1 | Django MVC | Models | Models |
| Feb 8 | Query | Templates/T2 | Queries |
| Feb 15 | X | Forms/Validation | Forms |
| Feb 22 | Identity | Auth | Identity |
| Mar 1 | JS | DOM/T3 | JS |
| Mar 8 | X | X | |
| Mar 15 | Events | Fetch | Events |
| Mar 22 | Testing | Testing/T4 | Testing |
| Mar 29 | Project | Networks | P1 |
| Apr 5 | Internet | Compute | P2 |
| Apr 12 | Cloud | Scaling | P3 |
| Apr 19 | Review | X |
Getting Help
Getting help early is the best way to succeed in this course. There are three ways to get help in this course:
You can ask questions on Piazza. This will typically get you the fastest responses, especially since other students can help you out. Naturally, don't post your homework solutions, but short snippets of code that are not directly from your homework but that illustrate an issue are fine.
You can ask questions after class. This is a good way to get answers to quick questions about your grade or assignment.
You can go to office and help hours. See posted times under Course Resources. You will have the TA's undivided attention during office hours, so this is a great way to get debugging help or ask larger conceptual questions
Do not wait to get help. It's much easier to not fall behind than it is to catch up!
Policies
Academic Misconduct. CS 3550 will follow the School of Computing’s academic misconduct policy. Basically, it's OK to discuss the assignment or your approach with other students at a high level, but it is not OK to share code or look at another student's code, or similar code found online. Academic dishonesty results in a failing grade for the course, and two instances of academic dishonestly lead to expulsion from the major.
AI. You must not use AI tools (such as ChatGPT, Copilot, and so on) for any code you submit for an assignment. In an introductory class like this, they work too well, to the extent that they'll keep you from learning skills you'll need in later classes or your career. That said, you are free to use AI tools for other purposes, like answering general questions about web technologies, or providing examples of how to use an API.
Changes. The syllabus can be changed with reasonable in-class notice by the instructor.
Please also familiarize yourself with University policiesLinks to an external site. on the ADA, safety, sexual misconduct, student support, and academic misconduct, as well as the Kahlert School of Computing's academic policiesLinks to an external site. and the College of Engineering policiesLinks to an external site..