# | resource |
---|---|
1 | The current version of this syllabus |
2 | Welcome Video |
3 | What should you do the first week |
4 | Instructor: Ron Zacharski [email protected], 575.680.4041 |
5 | Experience Point Sheet |
6 | The UMW Database Slack Workspace |
This course provides an introduction to databases and backend web development. It covers Postgresql, Javascript, HTML/CSS, and Elasticsearch.
This class is asynchronous meaning there is no mandatory real-time interaction. You will be working through the Inquiryum Backend Developer Fundamentals Course. You can watch the videos anytime you want. You can play them at a faster speed, you can rewatch them or pause them. You can work on the course material in 20 minute blocks throughout a day, or devote a large contiguous block of time once per week. When you need help you can use the class Slack channel to get assistance from me or your classmates.
The advantages of this approach is that it allows you great flexibility in when you want to work on the material and for how long. And, as described below under mastery learning, it allows you to work at your own pace.
See the description of the study groups on the What to expect page.
I will be sitting at my laptop on the UMW Database Slack workspace on Monday through Wednesdays from 11am until 2pm ET. This means that if you message me, I will respond immediately unless I am helping another student. Excluding those times, my next level of availability is Monday through Thursday from 11am to 4pm. My average response time during that period is 15 minutes. Feel free to message me outside of those times but my response delay might be significant. Often I turn off Slack notifications at midnight. There may be times during Friday through Sunday when I don't have cell coverage and I will not be able to receive your message.
The above hours may be subject to change if other times benefit more students. These changes will be announced in the Slack channel.
JavaScript, often abbreviated JS, is the core programming language of the web, running both in a user's browser and on the backend. It is a high-level, just-in-time compiled language. Node.js is a runtime environment that allows JavaScript to be executed outside of browser typically on the server side.
Students should be able to
- write complex command line programs in JavaScript.
- write code that executes asynchronously
- write a scalable, maintainable, backend server.
- write code that interacts with a database server
- test and evaluate code using an industry-standard test environment.
PostgreSQL is one of the most popular free and open-source relational database management systems, and is available on wide variety of operating systems.
Students should be able to
- design and implement databases based on an English description of the data.
- understand database normalization and design database that meet the normalization requirements.
- demonstrate a good understanding of SQL including subqueries, joins, and transactions.
HTML and CSS define the user interface of a web application. Understanding both are are of major importance to web developers.
Students should be able to
- Read and write HTML and CSS
- Utilize semantic tags to provide clear structure to HTML
- Manage the layout of a complex web page using CSS
The majority of effort in the course is in working on tasks and project, which have different levels of expected knowledge and independence.
- Closely mirror the examples shown in the course videos.
- The majority of the code is provided to you.
- Where appropriate, test code is also provided enabling you to get instant feedback.
- You are to:
- write a small amount of code to complete the task
- evaluate what you have done by running the tests
Tasks are evaluated on a four tier system.
- tier 1 the task code works and all code is 100% correct. The code is formatted correctly (indentation follows programming standards, comments when needed, no debugging print statements remain, no old code lines commented.) - (100% xp)
- tier 2 the task code works and all code is 100% correct. However, the code is not formatted correctly -(65-75% xp)
- tier 3 most of the task code works. However, there are coding errors or missing functions. - (25-50% xp)
- tier 4 the code mostly does not work or was not submitted. - (0% xp)
For example, if a task is worth 20 points, you might get 20 for tier 1, 15 for tier 2, 7 for tier 3, and zero for tier 4.
You can submit up to two tasks per week.
- Follow examples shown in the course videos.
- Build off of concepts and skills you learned completing prerequisite tasks.
- Project definition provides either
- an API specification and test file
- a video showing an example of a completed project
- You are to
- design and create the database to support the project
- write the Javascript code to implement the specification
- test and evaluate you code.
- move you code to a production environment.
Projects are evaluated as to whether the code works or not (passes the necessary tests). If it does not you will fix your code and resubmit. You can submit as many times as necessary to pass the tests. The test set that is used to evaluate your code may be larger than that given to you to aid you in development. For some projects there are optional parts for which you will get additional points.
You must complete the prerequisite tasks before starting a project and you cannot submit more than 2 projects per week.
Often when you are applying for a job, you are given a timed programming task. The core competency task is designed to help you prepare for this. The tasks involves writing a backend for a web service in JavaScript and PostgreSQL. You can take the test at any time (after you meet the prerequisites), but once you start you will have four hours to complete it. By any time I mean that you can decide to take it at 1 in the afternoon on a particular Tuesday, or 1am on a Sunday morning.
Traditional classes are time-based learning. You spend a specific amount of time on a topic and then you move on to the next topic. For example, in a traditional programming course you might cover while and for loops in week 5, take a quiz on them, and then move on to ArrayLists in week 6. Suppose you got a 75% on that quiz in week 5. That means that you did not learn 25% of the material. Then perhaps in week 10 you take a test on inheritance and get an 80% (you did not master 20% of the material). These gaps in your mastery start adding up, and eventually, in either in some future class or on the job, you hit a wall because your current task requires that you are skilled in areas that you failed to master.
This class doesn't work like that.
In contrast to time-based learning, in mastery Learning you stay on the topic until you master it. You work at your own pace. This online class is based on this approach. You stay on a topic until you master it. The lectures are a set of videos (mostly screencasts) that you can watch at anytime. If the material is easy for you, you can speed up the videos and watch them at 1.5 speed. If you find the material challenging, you can rewatch the videos, google for more information, interact with other learners on the Slack channel, or request a private Zoom conference with the instructor.
Obviously, the work-at-your-own pace approach will collide with the end of the semester and there will be some material that you will not cover. The course is designed so that the essential core information is presented first, to enable you to develop solid foundational skills with no gaps.
This course is work at your own pace. Other courses you might be taking have fixed deadlines, So, for example, you might have a gnarly project for a programming class due this week and a big operating systems project due next week. It is likely that you will work on those projects since they have immediate deadlines and ignore working on this course. It is human nature. To give you some flexibility but to help you stay focused, there will be both recommended and hard deadlines for each project. For example, one project has a recommended deadline of the fourth week of class and a hard deadline of the eighth week.
By hard deadline I mean that any work received after the deadline will not receive any xp.
By recommended deadline I mean a suggested deadline that is designed to help you get an A in the course and equally distribute the work throughout the semester.
There is nothing to prevent you from doing all the course work in 12 weeks, get an A, and spend the remainder of the semester focused on your other classes.
If you work at a pace set by the hard deadlines you will pass the course with a D. In a sense, the hard deadlines are provided as a safety net to have people stay on track to pass the course.
If you work at a pace set by the soft deadlines you will get an A in the class.
Order | Lesson |
---|---|
1 | JumpStart |
2 | Tasks |
3 | Projects |
Again, the class is work-at-your-own pace, but we provide a suggested schedule below.
Week | Date | Unit | Topics |
---|---|---|---|
1 | 25 Jan | Intro | Intro, MVC, RESTful, Gitlab lab |
2 | 1 Feb | SQL | creating and inserting data into a databas. Update, alter, delete |
3 | 8 Feb | Javascript | Intro to Javascript |
4 | 15 Feb | JavaScript | NodeJS, using PostgreSQL with Node |
5 | 22 Feb | Deplayment | Google Cloud, Nginx reverse proxy |
6 | 1 Mar | SQL | 3NF, joins |
7 | 8 Mar | SQL | transactions |
8 | 15 Mar | Javascript | Intro to React and Nextjs |
9 | 22 Mar | JavaScript | Full Stack Web Development |
10 | 29 Mar | JavaScript | cookies |
11 | 5 Apr | JavaScript | - |
12 | 12 Apr | ElasticSearch | noSQL, Elastic Search |
13 | 19 Apr | Projects | - |
14 | 26 Apr | Projects | - |
Meeting the hard deadlines should put you around a C for the course. To be considered to be on time for a hard deadline, the code must be submitted before the date indicated.
Project | Recommended Deadline | Hard Deadline |
---|---|---|
1 Workshop v1 | 27 Feb | 13 Mar |
2 Workshop v2 | 6 Mar | 27 Mar |
3 NextJS | 20 Mar | 16 Apr |
4 Complete Web App | 27 Mar | 30 Apr |
5 SuperSearch | 10 Apr | - |
6 ElasticSearch | 30 Apr | - |
Google Cloud Account (or equivalent)
Laptop
Inquiryum’s Backend Developer Fundamentals course
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 from either myself or fellow learners.
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:
Level | XP | Grade |
---|---|---|
Zero | 0 | F |
One | 240 | D |
Two | 340 | D+ |
Three | 450 | C- |
Four | 550 | C |
Five | 650 | C+ |
Six | 750 | B- |
Seven | 850 | B |
Eight | 925 | B+ |
Nine | 1000 | A- |
Ten | 1100 | A |
Here are the ways of earning XP:
-
there will be at least 10 tasks. On average each will be worth 22xp
-
there are 6 PostgreSQL projects. On average, each is worth 125xp
-
there is an ElasticSearch project worth 150xp
-
the core competency programming challenge is worth 150xp
Computer Science Department Honor Code Policy
The amendments to the Computer Science Department policy are as follows (the numbers related to the numbers in the policy):
- In the initial comment block of any submitted assignment, type I hereby swear upon my word of honor that I have neither given nor received unauthorized aid on this work followed by your name.
- I am more flexible than the policy "you are not to communicate to others in any way about your assignment." My rule of thumb is What would a responsible adult do on the job? If you have a deadline on the job at a startup and didn't know how to do something, the responsible thing wouldn't be to sit at your workstation just getting more and more frustrated and depressed and missing the deadline. The responsible person would get whatever help was necessary to complete the task. On the other hand, a responsible person wouldn't let someone else do all the work and present it as his own. That would be a violation of this policy. (See the Slack section of the syllabus)
- Regarding " Remember that giving unauthorized help violates the Honor Code just as much as receiving unauthorized help does." Again, I refer to the 'responsible adult' mentioned above. I would like people to help each other but yet do the work to learn the material. Sharing a complete assignment violates this point, but helping a person debug a function is fine.
- Sadly, this contradicts what you want to do in your professional life. In your professional life, you want to post solutions to things you figured out as a way of helping people in the community. In fact, we are going to be using some material people posted in this class. However, to prevent plagiarism, you will only post your material to a private github repository. Sorry.
- You should acknowledge the people that helped you in writing in your submission. For example, "Ann Mulkern helped me with the code to divide the dataset into training and testing sets"
- All the rest of the conditions of the computer science policy hold as is.
During the first week of class you will need to fill out the Avatar Form 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. To further protect the anonymity of those who wish to remain anonymous, the spreadsheet will also be populated by fictitious avatar names.
The Office of Disability Resources has been designated by the college as the primary office to guide, counsel, and assist students with disabilities. If you receive services through the Office of Disability Resources and require accommodations for this class, make an appointment with me as soon as possible to discuss your approved accommodation needs. Bring your accommodation letter, along with a copy of our class syllabus with you to the appointment. I will hold any information you share with me in strictest confidence unless you give me permission to do otherwise.
If you have not made contact with the Office of Disability Resources and have reasonable accommodation needs, (note taking assistance, extended time for tests, etc.), I will be happy to refer you. The office will require appropriate documentation of disability
University of Mary Washington faculty are committed to supporting students and upholding the University’s Policy on Sexual and Gender Based Harassment and Other Forms of Interpersonal Violence. Under Title IX and this Policy, discrimination based upon sex or gender is prohibited. If you experience an incident of sex or gender based discrimination, we encourage you to report it. While you may talk to me, understand that as a “Responsible Employee” of the University, I MUST report to UMW’s Title IX Coordinator what you share. If you wish to speak to someone confidentially, please contact the below confidential resources. They can connect you with support services and help you explore your options. You may also seek assistance from UMW’s Title IX Coordinator. Please visit http://diversity.umw.edu/title-ix/ to view UMW’s Policy on Sexual and Gender Based Harassment and Other Forms of Interpersonal Violence and to find further information on support and resources.
Tiffany W. Oldfield, J.D. Title IX Coordinator Office of Title IX Fairfax House 540-654-5656 [email protected]
Myranda Thomson Title IX Deputy for Students Area Coordinator 540-654-1184 [email protected]
On Campus
Talley Center for Counseling Services Lee Hall 106
Student Health Center Lee Hall 112
Off-Campus
Empowerhouse 540-373-9373
RCASA 540-371-1666
Classroom material in this course may be copied by students enrolled in the course for the personal, educational use of that student or for all students presently enrolled in the class only, and may not be further copied, distributed, published or otherwise used for any other purpose without the express written consent of the course instructor. Distribution or sale of class material is prohibited without the written permission of the instructor and other students who are recorded. Distribution without permission is a violation of copyright law. This policy is consistent with UMW’s Policy on Recording Class and Distribution of Course Materials. Academic Integrity