Dr. Greg Bernstein
August 17th, 2021
This is a programming course that uses current industry standard tools that you must install and use.
The assignments may seem very simple/easy at the start but expand and build on each other to become quite complex.
Current practices and trends in software design, development, and deployment of web-based systems, with particular emphasis on e-commerce. Projects incorporating the latest technologies and techniques used by the Internet community. Review of literature.
Prerequisites: CS 351 and CS 401.
CS 351 - Website Development, Units: 3
Website development emphasizing presentation layer with client side and server side technologies. Topics covered include HTML, CSS, media, JavaScript, CGI server-side programming.
I will assume you are familiar with:
CS 401 - Software Engineering, Units: 3
Concepts and issues in the development of large software projects. Approaches to requirements, analysis, design, implementation, testing, and maintenance of high-quality software. Systems for software design, management, documentation and testing such as UML, GIT, Javadoc and Junit. Programming in Java.
I will assume you are somewhat familiar with a version control system like git.
Full stack web development includes development for the front end (browser or mobile platform), the backend (servers of content and/or data), and the network (protocols and architectures).
Students will be able create styled web pages, Graphical User Interfaces (GUIs), and front-end only applications using the following technologies…
Note Topics we will cover in CS651 that are not covered in my CS351 class: SVG, JSON-Schema, JavaScript server testing, REST APIs, and WebSockets.
Topics in my CS351 class that we will not cover in CS651 include: templates and static site generators. Note that the pace of CS651 is significantly faster on HTML, CSS, and JavaScript fundamentals.
The tentative course schedule is in the syllabus and maintained only at https://www.grotto-networking.com/WebSystems/WebSystemsMaterials.html
There are a huge number of topics that a web developer may encounter and use in the real world and many opinions on what a developer should know in any given year.
See for example Developer Roadmaps (frontend and backend).
This course will emphasize the development of modern secure multi-user web applications with sophisticated browser user interfaces based on a modern front end framework such as React that interact with servers through data centric machine to machine interfaces such as REST or GraphQL utilizing JSON.
Subjects to be covered will include:
Backend (server side) implementation via Node.js/Express, a bit of web security: TLS, encryption, secure hashes, protection of passwords, OWASP cheat sheets
Tools and Deployment Architectures: Git, Bundlers (Parcel), reverse proxies, etc…
Students are required to review the course slides for each module taught in class and to read the supplemental material indicated in the slides. These form the course readings.
Mozilla Developer Network will be our main source for readings and reference
Laptop or desktop running modern version of Windows, MacOS, or Linux.
Ability to install required Open Source (free) development tools
Network connectivity and bandwidth: This course will be using Zoom for online course lectures and office hours.
your development environment is your responsibility!
I cannot configure your computer for you.
I will encourage students to help each other with their development environments.
Most problems encountered with computers, software, or networks do not excuse late submissions of assignments or exams.
Every programmer should be using version control for all but the smallest projects. In this class we will use git.
We also need a way to privately share many files between student and teacher/grader. For this we will use GitHub classroom.
Use is required for all submissions of homework and exams.
Very good free editors
You’ll need to install node.js
All assignment, project, and exam grading is based on the techniques, procedures, and styles taught in class.
Credit may not be given to random solutions obtained via the internet even if they “work”. There will be no debates on this criteria.
If you believe that you have a superior technique for solving a problem discuss it with me prior to using it on an assignment or exam.
Credit for a problem on an assignment does not endorse a technique.
In-Person Instruction: 25% assignments, 20% each midterm, 30% final, 5% participation. No extra credit will be assigned.
Remote Instruction (Covid-19): 35% assignments, 15% midterm, 30% code review/interview, 15% final, 5% participation. No extra credit will be assigned.
The grading scale is as follows: A 92.5%, A- 90.0%, B+ 87.5%, B 82.5%, B- 80.0%, C+ 77.5%, C 72.5%, C- 70.0%, D+ 67.5%, D 60.0%, F lower than 60%
Problems sets will be generally be assigned on a weekly basis and will be posted on the course website with a reminder sent through Blackboard.
We will be using GitHub classroom for almost all the work in this class.
Assignment submission will consist of a commit/push of programming resources to your private class repository on the properly named branch prior to the deadline.
No email submissions or Blackboard submissions will be accepted!
Repository branch names will be given with the assignment and must be followed exactly or the assignment will not be graded.
A randomly selected subset or all of the problems will be graded for each assignment.
There will be two midterm examinations for in-person instruction. These will be closed book pencil and paper exams. If instruction is remote there will be only one midterm and this will be a time limited programming assignment, turned in via Git and graded primarily on working functionality.
Under remote instruction instead of a second midterm I will perform an in depth review of selected portions of coding assignments/project during the 2/3 of the course. This includes evaluation of functional/non-functional code against assignments/project requirements. No code review will be done under in-person instruction.
For in-person instruction the final will be a close book pencil and paper examination at the time specified by the university. For remote instruction this will be a time limited programming assignment, turned in via Git and graded primarily on working functionality.
Class participation credit can be earned in a number of ways:
Outside of class sessions class participation credit can be earned by:
Office hours are shared amongst the many students in my class. Most times demand for my attention is moderate, but when there are many students waiting I will need to limit each students time to try to accommodate as many students as possible.
I will be encouraging students to help each other during office hours. Such assistance to your fellow students counts as “class participation”
We live in a multi-cultural world! At US universities there are certain customs and protocols that are typically observed.
“I have doubts on XYZ” sounds to native English speakers that you may not consider “XYZ” valid or good in some sense.
What is typically intended is “I do not understand XYZ”, and even better yet let me know the details of exactly you don’t understand.
By enrolling in this class the student agrees to uphold the standards of academic integrity described at https://www.csueastbay.edu/aps/academic-policies/academic-dishonesty.html.
Although collaborative study and dialogue are encouraged, students are expected to author solutions entirely on their own.
If you have a documented disability and wish to discuss academic accommodations, or if you would need assistance in the event of an emergency evacuation, please contact me as soon as possible. Students with disabilities needing accommodation should speak with the Accessibility Services.
California State University, East Bay is committed to being a safe and caring community. Your appropriate response in the event of an emergency can help save lives. Information on what to do in an emergency situation (earthquake, electrical outage, fire, extreme heat, severe storm, hazardous materials, terrorist attack) may be found at: http://www20.csueastbay.edu/af/departments/risk-management/ehs/emergency-management/index.html Please be familiar with these procedures. Information on this page is updated as required. Please review the information on a regular basis.
Title IX and CSU policy prohibit discrimination, harassment and retaliation, including Sex Discrimination, Sexual Harassment or Sexual Violence. CSUEB encourages anyone experiencing such behavior to report their concerns immediately. CSUEB has both confidential and non-confidential resources and reporting options available to you. Non-confidential resources include faculty and staff, who are required to report all incidents and thus cannot promise confidentiality. Faculty and staff must provide the campus Title IX coordinator and or the DHR Administrator with relevant details such as the names of those involved in an incident. For confidential services, contact the Confidential Advocate at 510-885-3700 or go to the Student Health and Counseling Center. For 24-hour crisis services call the BAWAR hotline at 510-845-7273. For more information about policies and resources or reporting options, please visit the following websites: https://www.csueastbay.edu/riskmanagement/complaint.html, http://www.csueastbay.edu/titleix
The University is committed to maintaining a safe and healthy living and learning environment for students, faculty, and staff. Each member of the campus community should choose behaviors that contribute toward this end http://www.csueastbay.edu/studentconduct/student-conduct.html.