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 data-driven web apps and to gain this proficiency requires lots and lots of practice. You may be spending up to 12 hours outside of class programming.
- Because of the nature of the course it is possible for students to feel overwhelmed and start suffering. I will try to avoid this happening as best I can by adjusting the schedule and requirements as necessary. If you are feeling overwhelmed please let me know.
- The class is divided into two parts. The first part is 9 weeks long and covers SQL databases. The second part spans the rest of the semester and covers noSQL databases. The are programming projects for both parts.
- For the SQL component, we will be going through the textbook, one chapter per week (sometimes multiple 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 9 weeks there are 4-5 Readiness Assessment Tests (RATs) that assess whether you have read the material.
- The vast majority of the class time is spent doing not listening to me yabbering away. 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 if you are to gain full benefit from the course.
- There is a 6 week long programming project where teams will design and implement a web application that uses a PostgreSQL database. There is a 3 week long programming project where teams design and implement a web app using mongodb.
- 3-5 hours per week of studying outside of class (including reading the textbook and other sources)
- 6-12 hours of programming per week outside of class time (as the semester progresses you will be spending more and more time programming)
- ~5,000 source lines of code for the entire semester.
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
Web IDE: Cloud9: c9.io Sign up for a free account
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. It will be beneficial to have PostgreSQL installed on it and you will need to access the secure network.
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.
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
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.
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 Two or lower when mid-semester reports are due, I will report your work as unsatisfactory.
RATs -Readiness Assessment Tests – 600XP
There will be approximately 6 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.
Final – 300XP
The final is a timed programming assignment involving writing a backend for a web service in Python and PostgreSQL. You have 4 hours to complete it. The final will be available starting on the 13th week of the class. Once available you can request the final at a time that is convenient to you. Once the final is emailed to you the clock starts. The final is designed to mirror what you might expect in a job interview. Often, you are asked to bring your laptop loaded with your programming environment to the interview site and complete a task given to you.
Projects – 700XP
The projects will be team based using Agile Software Development with Scrum. Scrum is a software development process that works on a development cycle called a sprint. In the case of this class, sprints will be two weeks long. At the end of each sprint each team will demo their application. Projects will also require use of the Git versioning system and GitHub. A portion of the XP for the projects is given for strictly conforming to the Scrum process and Git.
The MySQL Project involves writing a web application using PHP and MySQL about the difficulty level of developing a simple shopping site or simple social networking site.
This project will involve writing a web app that uses Cassandra.
Worksheets/Labs -600 XP
A good deal of class time will be directed at doing hands-on work. Sometimes a group will collaborate on one task. At other times, each individual must do something (for example, the first task is to get a web server, and mysql server running), but the idea is that everyone in the team will help make sure each individual will succeed.
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).
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 piazza and the course web page.
For questions about any aspect of the course including homeworks and labs, please use piazza rather than email. If you want you can tag questions as ‘private’.
You are responsible for checking your email and piazza 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).
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 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 an automatic zero for that submission.
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.
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
The class schedule is posted on the course website.
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.