Instructor:
Cyndi Rader, crader@mines.edu, website: www.mines.edu/~crader
No office hours. I no longer live in the Golden area, so all support for this course will be provided via piazza and/or email.
Course Goals:
The goal of this course is to provide senior-level students with the skills, experience and perspective necessary to build Web applications using effective, modern tools. In addition, the student is challenged to think about Web application architecture, which has been rapidly changing since the turn of the century. Topics include:
- Web basics: HTML and CSS
- JavaScript and JSON
- Web server: Node.js
- Web framework: Express.js
- Database: MongoDB (NoSQL)
- UI: React library
- Web architectures: REST, Model-View-Controller, Single Page Application (SPA)
Textbooks
There are 2 required textbooks:
- Getting Mean with Mongo, Express, Angular and Node, Simon Holmes. 2016. The angular material is outdated, so we will not cover chapters 8-11. NOTE: A second edition just became available via Manning Early Access. We will not be using the second edition.
- Learning React 2nd edition, Kirupa Chinnathambi, 2017. NOTE: The 2nd edition is not available (author thought it would be, but as of Jan 4 it is not). So we will make use of the website: https://www.kirupa.com/react/. If you prefer hard copy, you can buy the first edition. Syntax changes are relatively small for the chapters we'll cover.
Student Evaluation:
In a traditional 3-credit class, you would spend 3 hours/week in a classroom. For this online course, you should plan to spend ~8-12 hours/week on average (includes ~3 hours/week you'll spend reading, watching videos or walking through tutorials). Some weeks will be less, a few weeks may be more. Time will vary by individual, of course.
Course component | % |
---|---|
Individual assignments | 50% |
Class participation | 5% |
Paper | 5% |
Team Assignments | 40% |
Due Dates
NOTE: All assignments will be due at 11:59 pm on the day listed on the Assignments page.
Late Policy
Late work is strongly discouraged!
- On time - yay! Potentially full credit.
- Within 24 hours: 75% credit (25% late penalty, but must be fully functional)
- Within 48 hours: 50% credit (50% late penalty, but must be fully functional)
- More than 2 days late: No credit. :-( But some assignments build on each other, so don't do this!
Each semester a few students do the work on time, but forget to submit on BB. If there is a git log supporting the fact that the work was done on time, the student will be assessed a 10% submission error penalty.
Part of an online course is planning and you must plan to submit your material on time. Since there is no official class time, all discussions are asynchronous... so responses from me or members of the class will not be immediate. That's no excuse for late work.
BOTTOM LINE: DON'T BE LATE!
Class Participation
How does one participate in an online class? Partly via online tools, partly by working closely with team members. Specifically, to get full class participation credit you must:
- Have a CS CONNECT profile with a recognizable picture and something meaningful in your bio. Since I have retired, this will be the only way for me to "know" some of you.
- Participate on piazza. Each student must have at least one piazza post. If you don't have any specific questions, you can post a link to an interesting CS-related blog, or some humor, or maybe a humorous cat picture. Please do NOT post something like: "Here's my post for credit" - that just wastes everyone's time (and I will just delete it).
- Actively engage with your team. There are several assignments where I ask team members to work together (e.g., to install software, which can sometimes be a challenge).
Pre-Requisites
The pre-requisite for this course is CSCI-262: Data Structures. The co-requisite is CSCI-403: Database Management. You should also be comfortable with (or willing to learn) git for version control. This is an online, senior-level course covering material with a fairly steep learning curve. Students must have sufficient background and experience to learn new technologies without the benefit of classroom lectures.
The good news: Learning in this fashion is an important skill, as CS is a rapidly evolving field and software engineers must have the ability to acquire new skills and learn new languages/ technologies throughout their careers.
The caveat: It takes time to develop strong programming skills and confidence. If you just finished Data Structures and struggled to understand concepts, you may want to take a few other courses (e.g., CSCI-306) before tackling this type of online course.
You will also need access to a computer with an Internet connection and a current browser. You must have the administrative rights, as well as the knowledge, to install additional software on that computer (e.g., node, express, react, git, etc.). Whenever you install software, be sure that the computer is backed up and that you have understood the licensing. Also, be aware of the security risks associated with having a web server on your machine. If you have questions, ASK!
Collaboration Policy
The following policy exists for all CS courses. This policy is a minimum standard; your instructor may decide to augment this policy.
- If the project is an individual effort project, you are not allowed to give code you have developed to another student or use code provided by another student. If the project is a group project, you are only allowed to share code with your group members.
- You are encouraged to discuss programming projects
with other students in the class, as long as the following rules are
followed:
- You view another student's code only for the purpose of offering/receiving debugging assistance. Students can only give advice on what problems to look for; they cannot debug your code for you. All changes to your code must be made by you.
- Your discussion is subject to the empty hands policy, which means you leave the discussion without any record [electronic, mechanical or otherwise] of the discussion.
- Any material from any outside source such as books, projects, and in particular, from the Web, should be properly referenced and should only be used if specifically allowed for the assignment.
- To prevent unintended sharing, any code stored in a hosted repository (e.g., on github) must be private. For group projects, your team members may, of course, be collaborators.
- If you are aware of students violating this policy, you are encouraged to inform the professor of the course. Violating this policy will be treated as an academic misconduct for all students involved. See the Student Handbook for details on academic dishonesty.