Syllabus
What you need to know
- This class is fast pace. However, the class is not intellectually difficult. This is intensive training that is geared at having you acquire the necessary skills for developing skills as a backend web-app developer and to gain this proficiency requires lots and lots of practice. You may be spending up to 8 hours outside of class programming (maybe more).
- For most of the class you can work at your own pace. This class is based on mastery learning.
- Because of the nature of the course it is possible for students to feel overwhelmed and start suffering. You can greatly reduce this suffering by learning Javascript, HTML, and CSS before the start of the semester. If necessary, I may adjust the schedule and requirements. If you are feeling overwhelmed please let me know.
- The class is divided into two parts. The first part covers SQL databases and the second covers noSQL databases.
- For the SQL component, we will be going through the textbook, roughly two chapters per week. You are responsible for keeping up with the reading. I will not lecture on material covered in the textbook. In the first 8 weeks there are 4 Readiness Assessment Tests (RATs) that assess whether you have read the material.
- The vast majority of the class time is spent doing. You will be working on tasks that require you to apply the knowledge you have gained from reading the textbook.
- Because of the hands-on nature of the course, you will need to bring a laptop (or a chromebook) to every class if you are to gain full benefit from the course.
- There is a long programming project where teams will design and implement a data driven web app.
Effort required
- 3-5 hours per week of studying outside of class (including reading the textbook and other sources)
- 6-8 hours of programming per week outside of class time (as the semester progresses you will be spending more and more time programming)
- ~3,000 source lines of code for the entire semester.
Required materials
Textbook: Head First SQL Lynn Beighley Publisher: O’Reilly Media, Inc. Pub Date: August 28, 2007 Print ISBN-13: 978-0-596-52684-9 http://headfirstlabs.com/books/hfsql
Google Cloud, Amazon AWS or sth. similar.
Laptop: You need to bring a laptop to class. You will be using it for in-class programming, learning to write SQL queries, and online tests.
Highly recommended
For this course you need to learn React on your own. How you learn it is up to you. However, I highly recommend the following online video course which cost $15:
React Fundamentals: online course (If you signup using this discount page during the first week of class you can get the course for $15)
Catalog description
Presents logical database modeling and design, emphasizing the construction and analysis of relational schemas. Covers semantics, integrity constraints, functional dependencies, and table normalization. Practical use of relational algebraic operators, the tuple relational calculus, and their expression in declarative query languages. Introduces basic data mining concepts. May involve student team projects to develop small but representative data collection and analysis applications.
Course competencies
On successful completion of this course, you should be able to
- demonstrate a good understanding of SQL including subqueries, joins, and transactions.
- demonstrate the ability to create rudimentary database web applications.
- demonstrate the ability to develop applications based on the model-view-controller design.
Format of course
Teams
During the first day of class, all students will be assigned to permanent teams. Throughout the course, teams will both take team tests and participate in joint activities. Team performance will be one component of your final grade.
Evaluation
Grading is based on a method developed by Professor Lee Sheldon at Indiana University. It is based on obtaining experience points (XP). The number of XP determines what level you are at. You start the class at Level Zero and with 0 XP. The level you obtain at the end of the semester determines your final grade. Here is the chart:
If you are at Level Three or lower when mid-semester reports are due, I will report your work as unsatisfactory.
RATs Readiness Assessment Tests – 500XP
There will be approximately 5 short multiple-choice readiness assessment tests given during the course. Each test will be taken individually, then, immediately after, the same test will be taken as a team. Each individual test is worth on average 50 points; each team quiz is also worth on average 50. Makeup tests will not be given.
Core Competency Task (replaces exam) – 200XP
This is optional. The task is a timed programming one. It involves writing a backend for a web service in Javascript and PostgreSQL. You have 4 hours to complete it.
Programming Rudiments – 1200XP
There will be ten guided graduated projects throughout the semester designed to give you practice in writing data driven web apps. You can progress through these at your own speed but they must be completed by the 30th of November.
Creative Project – 200-500XP
Optional. Description forthcoming.
Lightning Rounds – 500XP
Timed team exercises on SQL statements where you compete against other teams.
Team participation – 100XP
Each student will rate the helpfulness of all members of their group. Individual group participation scores will be the sum of the points they receive from other members of their team. Each team member distributes 100 points to other members of the team. The average team participation score will be 100 points. The rater must differentiate some of their ratings (they cannot assign the same rating to all members).
Slack Participation – 100xp
Slack is a work chat application that many tech companies use. We are going to be using Slack in a number of ways. If you have a particular programming question you can ask it in a general channel and hopefully you will get an answer or suggestion quickly. In addition, you will report your progress to the class through it. In addition, all class announcements are distributed through Slack.
Attendance
Since there are no firm deadlines in this class, I worry that people will focus on work for other classes, delay working on tasks for this class and get far behind. To nudge people to work on this class I have decided on the following negative reinforcement.
If you are on or ahead of the suggested schedule there is no attendance requirement. If that is not the case, the following attendance penalties apply:
- first day absent: -10xp
- second day absent: -40xp
- third day absent: -150xp
- fourth day absent: -1000xp
Again, if you are on schedule there is no attendance requirement and you can miss as many days as you like without penalty. There are two components of attendance:
physical presence
Physical presence means you are present from the start of class to the end. You can leave for a short time –10 or 15 minutes total–(for example, to get coffee). Be respectful of people trying to focus in the class and take your fun off-topic conversations outside the classroom.
Slack check-in
Several times per week one of our Slackbots will ask you three questions:
- What have you accomplished since the last class?
- What are you working on now?
- What is holding your back?
Failure to do the Slack check-in also counts as missed attendance.
Demo limit
You are also limited to 2 demos per week. Last semester someone came in the last day and demoed nearly all the projects moving from an F to a C+. That would be fine if I thought they learned something, but my gut reaction is that they just got the code from someone else. This is not an isolated occurrence and I always think that people really didn’t learn anything with this project dump.
The last day to demo anything is the 30th of November.
Avatar names, pseudonyms, noms de plume
During the first week of class I will ask you for your avatar name, pseudonym, whatever. This is the name that will appear on the Experience Point Google Spreadsheet that will be viewable by everyone in the class. If you wish to remain anonymous, don’t share your avatar name with anyone. On the other hand, if you would like recognition for achieving level 10 as an example (“a big shout out to tera miner for achieving level 10″), you can share your name. The decision is yours. To further protect the anonymity of those who wish to remain anonymous, the spreadsheet will also be populated by fictitious avatar names.
Announcements, discussions, and questions
I will communicate with the class via Slack and the course web page.
For questions about any aspect of the course including homework and labs, please use Slack.
You are responsible for checking your email and Slack every 24 hours and the web page at least weekly.
Accommodations for students with special needs
Any student with a documented disability may receive a special accommodation to complete any requirements of this course. If you are have a disability or believe you have one you may wish to self-identify. You may do so by providing documentation to the Office of Disability Services located in Room 203 of George Washington Hall (Phone: Voice 540-654-1266, Fax: 540-654-1163). Appropriate accommodations may then be provided for you. If you have a condition that may affect your ability to exit the premises in an emergency or that may cause an emergency during class, you are encouraged to discuss this in confidence with me and/or anyone at the Office of Disability Services. This office can also answer any questions you have about the Americans with Disabilities Act (ADA).
Academic Integrity
Department Honor Code Policy
I assume you are an ethical student and a person with integrity. I expect that you will follow the university honor code (see http://rosemary.umw.edu/CSHonorCode.html). Please use common sense and ask yourself what would a person with integrity do? To help you, I would like to make three comments related to this:
Plagiarism
Plagiarism means presenting some other person’s work as your own. This can mean using some other person’s words without acknowledging their source, or using some other person’s ideas. Copying another student’s work (homework or exam) is also plagiarism. Plagiarism will minimally result in a negative score for that submission. For example, if a task is worth 100xp, a plagiarized submission will result in -100.
Collusion
Collusion is unauthorized collaboration that produces work which is then presented as work completed independently by the student. Collusion includes participating in group discussions that develop solutions which everyone copies. Penalties for plagiarism and collusion include receiving a failing grade for the course.
Classroom behavior
I ask that you respect the other people in the class. I recognize that your life circumstances may require you to receive cell phone calls during class. If this is the case please set your cell phone on vibrate and discretely leave the class to accept calls. During tests, if you walk out of the classroom, or consult/display your cell phone, I will assume you are done with the test and collect your grading sheet
Schedule
The class schedule is posted on the course website.
Important details
Here are some other important things you should know.
- Regarding XP. As in a computer game, there is no negotiation for what XP you need to attain a certain level. For example, level 11 (the level associated with an A-) requires 2000 XP. Last semester someone sent me email saying they had 1998 XP, they worked really really hard all semester and deserved an A-. I gave him the A- but starting now the boundaries are hard and there is no negotiating.
- Cheating. Every semester I have multiple cases of people cheating either through plagiarism or collusion (see above definitions). Minimally, I give a person a 0 for that submission. When I taught a New Mexico, I automatically flunked people for an instance of cheating. For example, last semester two people worked together on the final exam. When I sent email telling them they got a zero, one wrote back complaining that this would really affect their final grade. In this class, most of the work will be done in groups, but be very mindful of when you should be doing work on your own.
- Crowd sourcing and reducing my Cognitive Load. Here’s the deal. When communicating with me please error on the side of giving me too much information. Last semester, I received emails with sentences like “My partner was Austin” (when there were 3 Austins in the class) or “I worked with Matt”. It reduces my cognitive load if you specify what section you are in and give full names.