Course Content

The course is essentially broken into two pieces. Around 3/4 of the course is dedicated to learning the basics of database design and use. You will complete 3 medium homework assignments and discuss them with your peers. The second part of the class will involve creating a simple website with a robust database backend.

There are two kinds of prepared material, they are both equally valuable. One kind are lectures which more formally go over the material. The second are “Real Coding” videos that demonstrate actual implementation and use of MySQL and web programming.

There will also be small quizzes which will help you keep informed of your understanding of the material. With few exceptions if you ever get a wrong answer on a quiz that means you are not understanding critical information and it is your responsibility to get clarification from your peers.

Student Expectations

Prior Knowledge

Students are expected to know the following:

You should be familiar with good coding practices. Good coding style is required and not taught in this class. You should understand basic control structures. If you are unable to code a simple sorting algorithm, you will have trouble in this class as this level of coding experience is expected.

You should also have completed 290 or be a strong student currently taking the course. It is possible to take these two courses at the same time, but if you run into difficulty in 290 you can have some real trouble late in this course, so do that with some caution.

Communication

Read this guide on on-line communication. Follow every link in the section on asking good questions and giving good answers. You may be graded on the quality of your discussion. You need to communicate with clients and coworkers in the real world, you need to communicate with your fellow students here. You learn by finding the limits and holes in your knowledge. The best way for you to find them is to talk with others about the topics at hand.

Communication Methods

Piazza
This should be used for all questions seeking technical help, conceptual help or assignment clarification. Essentially if it is any sort of information that may benefit other students, it should be posted to Piazza. If there is a question that gets ignored for longer than 48 weekday hours you can email the instructor and TA and ask them to follow up with it. It may have just gotten missed.
Slack
The Slack channel CS340-400 is the primary mode of conducting office hours by the TAs unless specified. At the beginning and end of each office hour session (whether or not it is held using Slack), the TA would put up a message on the Slack channel informing so.
Email
Email should be used for anything that contains sensitive information. So if you have a question about a grade or want to request an extension, do so via email. All emails should contain the exact characters [CS340] in the subject so that they get priority in my inbox. In addition, every time you reply to an email thread it knocks it to the back of the queue because email gets processed in order of the most recent emails last. So be careful sending multiple replies as it might bump you back in the queue.
Canvas Comments
Canvas comments should only be used by students to add commentary prior to grading and by myself and the TAs to give feedback. If you need to communicate something to myself or the TAs after your assignment has been graded do so via Email. We will not see comments posted to your assignment submission after it has been graded.
Canvas Mail
The TAs and myself try the best we can to monitor Canvas email. But there are less options to sort and filter mail via that system so there is a much higher likely-hood that we will miss things that get sent via Canvas mail. So I suggest you do not use it.

Communication Timelines

All emails should get a response within 48 weekday hours. So if you send an email at 8am on Monday, you should have a response by 8am on Wednesday. If you send an email at 10pm on Thursday, you should have a response by 10pm on Monday.

Do not expect communication on the weekends, though I do my best to look for urgent questions that are preventing you from making progress and answering them, even on the weekend. The more complete the question, the more likely you are to get help.

Code quality

Code must be clear and you must understand what it is doing. Having well commented and documented code is going to be extremely important. I or the TA may not know the platform you are using so it is your responsiblity to make sure that we can follow what is happening.

You should also have no major errors in your program. If we can manage to get the program to throw some default error message that is usually a major issue. Errors which you handle by popping up a message the user would understand (eg. 'Please enter only numbers in the age field') are usually fine, error messages like 'Error 0x00001: Null pointer to Null found, expected pointer to Int Factory Factory' are not.

When possible, you should find a style guide and conform to it.