CC 515 Syllabus

CC 515 - Full Stack Web Development

Instructor Contact Information

  • Instructor: Nathan Bean (nhbean AT ksu DOT edu)
  • Office: DUE 2216
  • Phone: (785) 532-7942
  • Website: http://www.nathanhbean.com/
  • Office Hours: TBD

Preferred Methods of Communication:

  • Piazza: Please use Piazza for all communication regarding these courses as it allows instructors and TAs to provide a clear and detailed response, as well as easily store and record communication for reference later. You should receive a response within one business day, and hopefully much sooner.
  • Email: Students are also welcome to email us anytime with questions outside of the scope of these courses. We will try to respond within one business day. Questions related to the course itself may be redirected to Piazza. We’re also active on the K-State CS Rocket.chat.
  • Phone/Text: Emergencies only! We will do our best to respond as quickly as we can.

Graduate Teaching Assistants

  • TBD

Prerequisites

  • CC 120 - Fundamentals of Web Development, CMST 135 - Web Fundamentals, or equivalent experience in HTML, CSS & JavaScript (contact the instructor for permission to enroll)
  • CC 315 - Data Structures & Algorithms II
  • CC 410 - Advanced Programming (Prerequisite or Concurrent Enrollment)

Course Overview

Fundamental principles and best practices of web development, user interface design, web API design, advanced web interfaces, web development frameworks, single-page web applications, web standards and accessibility issues.

Course Description

This course explores the standards, technologies, and strategies used in modern web application development. The ultimate goal is to develop the foundational theoretical and practical knowledge that will allow you to work with an endless variety of we stacks and frameworks, rather than focusing on a single technology or approach.

We have a lot of ground to cover, so we will be moving very quickly through the material. It is vital that you both keep up, and ask questions when you don’t understand. Make good use of office hours.

Course Objectives

At the end of this course, students should be able to:

  • Create three-tier web applications
  • Be experienced with Agile development
  • Understand and articulate the user interface issues, data structures, algorithms, an design patterns common to web development
  • Consider the memory and computational implications of software designs
  • Develop an understanding of how techniques used in web programing can be beneficially incorporated within general development efforts
  • Be able to quickly learn web frameworks implemented in different languages

Course Outline

The following is a general layout, and is subject to change:

  1. HTML5, CSS3, and user agents
  2. Hyper-Text Transfer Protocol
  3. ECMA Script 2015 (ES6)
  4. The Document Object Model
  5. JQuery
  6. Dynamic Web Services
  7. Databases
  8. CRUD & REST
  9. Authentication
  10. Webworkers
  11. Architectures for the Web
  12. AJAX
  13. Reactive Web Apps
  14. WebSockets
  15. Embedded HTML Templates
  16. Full-Text Search
  17. Tagging Systems
  18. User-Centered Design
  19. Test-Driven Development
  20. Geospatial Data & Location Services
  21. Canvas & SVG
  22. Accessibility
  23. Touch and Gestures
  24. Deployment Strategies
  25. Scalability
  26. Web Frameworks

Course Structure

These courses are being taught 100% online, and each module is self-paced. There may be some bumps in the road as we refine the overall course structure. Students will work at their own pace through a set of modules, with approximately one module being due each week. Material will be provided in the form of recorded videos, online tutorials, links to online resources, and discussion prompts. Each module will include a coding project or assignment, many of which will be graded automatically through Codio. Assignments may also include portions which will be graded manually via Canvas or other tools.

Grading

In recognition of the importance of hands-on learning, this course utilizes a blended lecture/lab format, where theoretical understanding is immediately put to use programming software drawing upon that theoretical understanding. Effective learning following this strategy depends upon active participation; accordingly it is necessary to both complete the online tutorials and participate in class activities to succeed.

Further, we will be embracing problem-based cooperative learning approaches at the midpoint of the semester where we will shift to small group work, developing an original and useful web application drawing upon the knowledge you have gained throughout the semester. To help promote accountability, peer reviews from this phase will account for the equivalent of a letter grade.

Grading Breakdown

  • 20% - Class Participation
  • 30% - Assignments
  • 30% - Final Project
  • 20% - Presentation & Evaluation

Letter grades will be assigned following the standard scale:

  • 90% - 100% → A
  • 80% - 89.99% → B
  • 70% - 79.99% → C
  • 60% - 69.99% → D
  • 00% - 59.99% → F

Late Work

Unless other arrangements have been made, work will not be accepted after the due date in this course.

To participate in this course, students must have access to a modern web browser and broadband internet connection. All course materials will be provided via Canvas, Piazza, and Codio. Modules may also contain links to external resources for additional information, such as programming language documentation.

There are a number of other extremely helpful resources you will want to use:

Github Classroom

We will be using the Github Classroom to for obtaining starter code and submitting assignments.

If you have not yet, I strongly encourage you to sign up with Github as a student: https://education.github.com/.

Safari Online

K-State libraries has obtained a Safari Books Online library containing over 6k current titles. You can access this collection using your eid and password here: http://proquestcombo.safaribooksonline.com.er.lib.k-state.edu

Websites and Wikis

The following are some helpful websites for web development

W3C Standards https://www.w3.org/community/webed/wiki/Main_Page

W3C Web Education Community Group Wiki https://www.w3.org/community/webed/wiki/Main_Page

Mozilla Developer Guide https://developer.mozilla.org/en-US/docs/Web/Guide

Course Software

Node.js (for webserver development) https://nodejs.org/en Node is a fast server-side JavaScript engine based on Google’s V8 JavaScript interpreter. We will be writing our webserver using Node.

Atom (Integraged Development Environment) https://atom.io Atom is an IDE that uses HTML5 and JavaScript as its underlying technologies, which akes it a natrual fit for web development. You will also want the atom-html-preview package https://atom.io/packages/atom-html-preview.

Google Chrome (Web Browser) https://www.google.com/chrome/browser/desktop/ Google chrome is a fast, cross-platform web browser with a robust set of developer tools. See https://developer.chrome.com/devtools for details. While you will always want to verify your web app using all browsers, we will be grading your work based on its performance in Chrome.

Subject to Change

The details in this syllabus are not set in stone. Due to the flexible nature of this class, adjustments may need to be made as the semester progresses, though they will be kept to a minimum. If any changes occur, the changes will be posted on the Canvas page for this course and emailed to all students. All changes may also be posted to Piazza.

Academic Honesty

Kansas State University has an Honor and Integrity System based on personal integrity, which is presumed to be sufficient assurance that, in academic matters, one’s work is performed honestly and without unauthorized assistance. Undergraduate and graduate students, by registration, acknowledge the jurisdiction of the Honor and Integrity System. The policies and procedures of the Honor and Integrity System apply to all full and part-time students enrolled in undergraduate and graduate courses on-campus, off-campus, and via distance learning. A component vital to the Honor and Integrity System is the inclusion of the Honor Pledge which applies to all assignments, examinations, or other course work undertaken by students. The Honor Pledge is implied, whether or not it is stated: “On my honor, as a student, I have neither given nor received unauthorized aid on this academic work.” A grade of XF can result from a breach of academic honesty. The F indicates failure in the course; the X indicates the reason is an Honor Pledge violation.

For this course, a violation of the Honor Pledge will result in an automatic 0 for the assignment and the violation will be reported to the Honor System. A second violation will result in an XF in the course.

The Codio platform can perform automatic plagiarism detection by comparing submitted projects against other students' submissions and known solutions. That information may be used to determine if plagiarism has taken place.

Students with Disabilities

Students with disabilities who need classroom accommodations, access to technology, or information about emergency building/campus evacuation processes should contact the Student Access Center and/or their instructor. Services are available to students with a wide range of disabilities including, but not limited to, physical disabilities, medical conditions, learning disabilities, attention deficit disorder, depression, and anxiety. If you are a student enrolled in campus/online courses through the Manhattan or Olathe campuses, contact the Student Access Center at accesscenter@k-state.edu, 785-532-6441; for K-State Polytechnic campus, contact Academic and Student Services at polytechnicadvising@ksu.edu or call 785-826-2674.

Diversity and Inclusion

Note

This is our personal policy and not a required syllabus statement from K-State. It has been adapted from this statement created by two educators at Brown University. We feel that a statement such as this is very powerful and important in today’s world, and we’ll do our best to live up to it.

In an ideal world, science and technology would be objective. However, much of science and technology is subjective and is historically built on a small subset of privileged voices. In this class, we will reference many materials from a diverse set of sources, but limits still exist on this diversity. I acknowledge that it is possible that there may be both overt and covert biases in the material due to the lens with which it was written, even though the material is primarily of a technical nature.

Please contact me or submit anonymous feedback through the Computer Science department office if you have any concerns or suggestions regarding this course and related materials.

Furthermore, I would like to create a learning environment for my students that supports a diversity of thoughts, perspectives and experiences, and honors your identities (including race, gender, class, sexuality, religion, ability, etc.). To help accomplish this:

  • If you have a name and/or use pronouns that differ from those that appear in your official K-State records, please let me know!
  • If you feel like your performance in the class is being impacted by your experiences outside of class, please don’t hesitate to talk with me. I want to be a resource for you. Please remember that you can also submit anonymous feedback as described above (which will lead to me making a general announcement to the class, if necessary, to address your concerns).
  • If you prefer to speak with someone outside of the course, your academic advisor or the staff in the College of Engineering Student Services office are excellent resources.

I, like many people, am still in the process of learning about diverse perspectives and identities. If something was said in class, by anyone, that made you feel uncomfortable, please talk to me about it. Again, anonymous feedback is always an option.

Netiquette

Note

This is our personal policy and not a required syllabus statement from K-State. It has been adapted from this statement from K-State Global Campus, and the Recurse Center Manual. We have adapted their ideas to fit this course.

Online communication is inherently different than in-person communication. When speaking in person, many times we can take advantage of the context and body language of the person speaking to better understand what the speaker means, not just what is said. This information is not present when communicating online, so we must be much more careful about what we say and how we say it in order to get our meaning across.

Here are a few general rules to help us all communicate online in this course, especially while using tools such as Piazza:

  • Use a clear and meaningful subject line to announce your topic. Subject lines such as “Question” or “Problem” are not helpful. Subjects such as “Logic Question in Project 5, Part 1 in Java” or “Unexpected Exception when Opening Text File in Python” give plenty of information about your topic.
  • Use only one topic per message. If you have multiple topics, post multiple messages so each one can be discussed independently.
  • Be thorough, concise, and to the point. Ideally, each message should be a page or less.
  • Include exact error messages, code snippets, or screenshots, as well as any previous steps taken to fix the problem. It is much easier to solve a problem when the exact error message or screenshot is provided. If we know what you’ve tried so far, we can get to the root cause of the issue more quickly.
  • Consider carefully what you write before you post it. Once a message is posted, it becomes part of the permanent record of the course and can easily be found by others.
  • If you are lost, don’t know an answer, or don’t understand something, speak up! Piazza allows you to send a message privately to the instructors, or post anonymously so other students don’t know your identity. Don’t be afraid to ask questions anytime, as you can choose to do so without any fear of being identified by your fellow students.
  • Class discussions are confidential. Do not share information from the course with anyone outside of the course without explicit permission.
  • Do not quote entire message chains; only include the relevant parts. When replying to a previous message, only quote the relevant lines in your response.
  • Do not use all caps. It makes it look like you are shouting. Use appropriate text markup (bold, italics, etc.) to highlight a point if needed.
  • No feigning surprise. If someone asks a question, saying things like “I can’t believe you don’t know that!” are not helpful, and only serve to make that person feel bad.
  • No “well-actually’s." If someone makes a statement that is not entirely correct, resist the urge to offer a “well, actually…” correction, especially if it is not relevant to the discussion. If you can help solve their problem, feel free to provide correct information, but don’t post a correction just for the sake of being correct.
  • Do not correct someone’s grammar or spelling. Again, it is not helpful, and only serves to make that person feel bad. If there is a genuine mistake that may affect the meaning of the post, please contact the person privately or let the instructors know privately so it can be resolved.
  • Avoid subtle -isms and microaggressions. Avoid comments that could make others feel uncomfortable based on their personal identity. See the syllabus section on Diversity and Inclusion above for more information on this topic. If a comment makes you uncomfortable, please contact the instructor.
  • Avoid sarcasm, flaming, advertisements, lingo, trolling, doxxing, and other bad online habits. They have no place in an academic environment. Tasteful humor is fine, but sarcasm can be misunderstood.

As a participant in course discussions, you should also strive to honor the diversity of your classmates by adhering to the K-State Principles of Community.

Expectations for Conduct

All student activities in the University, including this course, are governed by the Student Judicial Conduct Code as outlined in the Student Governing Association By Laws, Article V, Section 3, number 2. Students who engage in behavior that disrupts the learning environment may be asked to leave the class.

Campus Safety

Kansas State University is committed to providing a safe teaching and learning environment for student and faculty members. In order to enhance your safety in the unlikely case of a campus emergency make sure that you know where and how to quickly exit your classroom and how to follow any emergency directives. To view additional campus emergency information go to the University’s main page, www.k-state.edu, and click on the Emergency Information button, located at the bottom of the page.

Student Resources

K-State has many resources to help contribute to student success. These resources include accommodations for academics, paying for college, student life, health and safety, and others found at www.k-state.edu/onestop.

Face Coverings

To protect the health and safety of the K-State community, students, faculty, staff and visitors must wear face coverings over their mouths and noses while on K-State campuses in all hallways, public spaces, classrooms and other common areas of campus buildings, and when in offices or other work spaces or outdoor settings when 6-feet social distancing cannot be maintained. In addition, all students, faculty, and staff are required to take the COVID-19 and Face Mask Safety training. Employees who need reasonable accommodations and assistance related to required face coverings may contact the ADA coordinator at charlott@k-state.edu, and students needing accommodations may contact the Student Access Center at accesscenter@k-state.edu. In classrooms, faculty have the right to deny a student entry into the room if the student is not wearing a face covering.

Academic Freedom Statement

Kansas State University is a community of students, faculty, and staff who work together to discover new knowledge, create new ideas, and share the results of their scholarly inquiry with the wider public. Although new ideas or research results may be controversial or challenge established views, the health and growth of any society requires frank intellectual exchange. Academic freedom protects this type of free exchange and is thus essential to any university’s mission.

Moreover, academic freedom supports collaborative work in the pursuit of truth and the dissemination of knowledge in an environment of inquiry, respectful debate, and professionalism. Academic freedom is not limited to the classroom or to scientific and scholarly research, but extends to the life of the university as well as to larger social and political questions. It is the right and responsibility of the university community to engage with such issues.

© The materials in this online course fall under the protection of all intellectual property, copyright and trademark laws of the U.S. The digital materials included here come with the legal permissions and releases of the copyright holders. These course materials should be used for educational purposes only; the contents should not be distributed electronically or otherwise beyond the confines of this online course. The URLs listed here do not suggest endorsement of either the site owners or the contents found at the sites. Likewise, mentioned brands (products and services) do not suggest endorsement. Students own copyright to what they create.