SYLLABUS:

CS 356 Server-Side Technologies for Websites: An Introduction to the MERN Stack.: Fall, 2018

Southern Oregon University, Department of Computer Science

CRN 2124, Four Credits

Prerequisites:

B or better grade in CS 257

 

Professor:   Pete Nordquist

Office:         Computer Science Building CS 223

E-mail:       nordquip@sou.edu

Phone:        552-6148 - email works better than phone

 

Office Hours: http://cs.sou.edu/~nordquip/NordquistSchedule.pdf

 

Web Site:

http://cs.sou.edu/~nordquip/cs356  

 

The web site has lab assignments, notes, and demos.  We will also use Moodle for exams and class group discussions.

Course Text:

The ‘text’ for this course is an industry training video available through your student membership in the Association for Computing Machinery ($20) -- Called “Video” in the readings below.  Details on how to get this membership and access the video and other resources will be given in class.

 Course Description and Objectives:

Javascript has emerged as the language of choice for applications served over the web.  This class explores a modern web server javascript technology stack: Mongo Express React Node (MERN) by developing a social network web application using these technologies.  Upon completion of the course, students should be able to build the server side of a non-trivial web application, including database access and JWT authentication using this stack.

We assume students are competent in programming in Java.

 

This course covers a wide range of technologies and requires you are able to integrate them into a cohesive whole in order to create a working application.  All of us will struggle to some degree -- some more than others.  Please remember that struggle is the root of learning and try not to be discouraged by it.  When things start to feel overwhelming, talk to me or your classmates about what is happening and continue to try to move forward.  Personally, It helps me to attempt to describe my problem in writing.  The act of describing the problem often yields a way forward.  If not, you can send what you have written to me as an email.  Sometimes you need to take a break for awhile or call it a day, but don’t give up.

 

Tentative Topic Coverage: This schedule may change depending on class pace

 

Week

Reading/Viewing

1

Video: All sections in Chapter 1 (Node), node.js tutorial (https://www.w3schools.com/nodejs/default.asp open contents using ): HOME, Intro, Get Started, Modules, HTTP Module, File System, URL Module, NPM, Events, Upload Files.  (Lab 1 material)

 

 

2, 3, 4

Video: All sections in Chapter 2 (Express), possibly nodejs.mongodb tutorial (https://www.w3schools.com/nodejs/default.asp) (Lab 2 material)

 

 

5

Video: Chapter 3 (JWT intro), https://jwt.io/introduction/, https://medium.com/vandium-software/5-easy-steps-to-understanding-json-web-tokens-jwt-1164c0adfcec (Lab 3 material)

 

 

6

Exam  - Wed. notes/midtermStudyGuide.htm

 

 

7

Finish Video Chapter 3 – Passport JWT Authentication Strategy and validation for register and login (lab 4 material)

 

8

Video Chapter 5 -- Post API Routes: Create, Like, Unlike (Lab 5 material)

 

 

9, 10

Video Chapter 13 -- Deploy our application (Lab 6 material (possibly extra credit))

Course Grading:

There are six required lab assignments. Each lab assignment will require implementing a portion of the social network application plus an additional feature, which will test your understanding of how to apply your newfound skills to a problem not directly covered in the video and other readings.

 

Your 6 lab scores are worth 60% of your course grade.  To be successful, you must understand, character by character, the purpose of the code you write and be able to accurately describe the results this code will produce as seen by the user of your application.  Your understanding and ability to predict/describe the results your code will produce are more important than the results themselves, but the results are still important, because they are measurable.  The labs are your chance to practice, and practice makes progress.  Lab due dates are on moodle.  I charge a 1 point per calendar day late fee for labs not submitted on time.  If you turn labs in late, it is very difficult for me to get comments back to you in a timely manner. 

 

There will be one exam during the term (20% of your course grade) and a final (20% of your course grade).  Exams will contain coding problems similar to those given in the labs.  Doing your labs as independently as you can in a timely manner is the best way to prepare for exams.  Make-up exams will not be given unless arrangements are made in advance, or you had a bona fide emergency on the day of the exam, which you inform me of as soon as you are able.

 

Grade Breakdown:                                                            93-100 A               90-92 A-

                                                         88-89   B+                82-87   B               80-81 B-

                                                         78-79   C+                72-77   C               70-71 C-

                                                         68-69   D+                62-67   D               60-61 D-

                                                         Under 60 F

 

Syllabus statements from the provost’s office.