Course Syllabus

Some links in this tab are only accessible to registered students.
A PDF copy of this syllabus is available here at CS 340 Syllabus.


In this class you will have the opportunity to learn the basic skills needed to

  1. design and implement a simple to moderately complex database,
  2. make good decisions regarding database design, and
  3. document your design and queries in standardized notation.

Additionally, you will have the opportunity to practice these skills by building a simple website driven by a database backend.

Since databases are designed for concurrent access by multiple users, they always involve some type of computer network and therefore learning to write an application which runs on 3 tier architecture is a shared responsibility between this course and CS 290 Web Development.

One goal of CS 340 as it sits in the curriculum is to give students a solid introduction to databases as well as an in-depth understanding of how to write real world code that runs in a networked three tier architecture. This is captured in the course CLOs below. Many former students and the hiring employers are widely complementary that this course covers a broader view of data technology and how it sits in a modern networked computing environment.

Measurable Student Learning Outcomes:

At the completion of the course, students will be able to…
1. Describe the difference between a relational database and a flat file
2. Model a moderately complex data set by using an ER or UML diagram, and derive a
relational schema from that diagram
3. Create a relational database from a relational schema
4. Create multiple indices in a relational database, and explain when and why such indices are
5. Formulate SQL statements for data manipulation
6. Formulate simple queries in relational algebra by using projection, selection, product, and
join operations
7. Describe the components and interfaces of a Web-based database system
8. Design and implement a Web-based relational database system, using one or more scripting
languages (e.g., PHP) and an open-source database development system (e.g., MySQL)


Recommended books

Relational Database Design and Implementation by Jan L Harrington, 2016 Edition is the recommended textbook for CS340-400.
A rough mapping of the current weeks to the chapters of the book is given below:

  • Week 1
    Chapter 1 - pages 3-26

  • Week 2
    Chapter 3 - pages 47-53
    Chapter 4 pages 55-88
    Chapter 5 pages 89-105

  • Week 3
    Chapter 6 pages 106 - 140
    Chapter 10 pages 182- 190
    Chapter 11 pages 191 - 213
    Chapter 16 pages 323 - 350

  • Week 4
    Chapter 17 pages 355 - 373
    Chapter 19 pages 399 - 411

  • Week 5
    Chapter 7 pages 141 - 151

  • Week 9
    Chapter 24 pages 496 - 507

This book is available for free online for all the OSU students at the OSU Library

If you decide to use Python for web development in this course, the Flask user guide should be good enough.

If you decide to use node.js for web development in this course, the Node.JS guide should suffice.

Course Content

This course is dedicated to learning the basics of database design and use.

To accomplish this, along with 4 assignments you will work in groups on a term Project implementing the concepts that you learn each week.

There will also be small quizzes which will help you assess your own 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. I hope you will not hesitate to ask a question on Ed Discussion if this happens!

All the content, assignments, quizzes and project steps will be available in weekly Modules.


Expectations from Student

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.

Code quality

Code must be clear and you must understand what it is doing. Having well-documented code is going to be extremely important. I or the TA may not know the platform you are using, so it is your responsibility to make sure that your work is clear enough so 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 via a clear message to the user (e.g. 'Please enter only numbers in the age field') are usually fine. On the other hand, 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.

Expectations for Student Conduct

Student conduct is governed by the university’s policies, as explained in the Student Conduct Code. Students are expected to conduct themselves in the course (e.g., on discussion boards, email postings) in compliance with the university's regulations regarding civility.

Student Bill of Rights

OSU has twelve established student rights. They include due process in all university disciplinary processes, an equal opportunity to learn, and grading in accordance with the course syllabus:


About the Instructor

Hi, I am Danielle Safonte and will be your instructor this term. I am teaching this course with fellow instructor and computer scientist Dr. Michael Curry. Catch either of us on Teams!

I live on the east coast in New Jersey, recently moved from Brooklyn, NY. I have been a professor both for on campus courses and online courses at NYC College of Technology and Brooklyn College for many years now. I am excited to join the Oregon State team with you here online.

My undergraduate education was based in Business Information Technology Systems and Software Engineering obtained at the City College of NY. My Masters education was focused in Information Systems and Databases, obtained online in a program similar to this. As both a professor and a student in online education, I hope to bring an enjoyable, informative distance learning experience.

I started in the technology field working for the City University of NY as a lab technician and worked my way up while continuing my education to the Director of Technology and Database Administrator for some select departments in the college. I have created databases from scratch as well as worked with boxed software for customized database and analytic tools.

Through my almost 10 years of creating user manuals and holding training courses, I decided to take on a couple classes to teach. Little did I know a couple short years later, teaching became my main focus. I enjoy bringing real world knowledge into my courses to prepare you for a successful career ahead. I also freelance with a publisher to creating course content for online education. We have a variety of clients including Universities to large corporations, who look for training materials and courses just like this one.

I want you all to take away the most you can from this course. The only silly questions are the ones you walk away with never inquiring for an answer. If you are having a hard time or are unsure of something, please JUST ASK! I am available through Teams, Ed Discussion or by email. ( )

In my spare time, I enjoy traveling and spending time with my family. I look forward to connecting with you all and starting this learning journey with you.

Hi, I am Dr. Michael Curry and will be your instructor this term. I am teaching this course with fellow instructor and Database expert Danielle Safonte. Catch her on Microsoft Teams and Ed Discussions!

I am based out of the Portland Oregon area although I frequently work remotely at other locations. I have been a professor on campus at Oregon State and now online.

I didn't plan to become a computer scientist, but maybe like you I had a bit of a knack for it and kind of enjoyed doing things that required writing little programs. After college I was a telecommunications officer in the US Army and worked with lots of technology and communication systems, but I didn't write much code until later when I went to graduate school. My first job after that was as a software engineer for embedded systems manufacturer. It was a great learning experience to work in industry. Later I joined a and being part of a fast-paced start-up was another great experience. Eventually I decided that I wanted to start my own company. So in 2003 I went out on my own and over the next decade worked with over 100 different businesses writing data-driven web applications, similar in many respects to the ones that you will be working on this term as part of your course project.

I have also been fortunate to teach this material to students like you for many years. Former students have said that they found this Introductory Database course to be well organized and learned a lot of practical and highly relevant skills. I recently redeveloped this course and got to build onto much of the great work started by other instructors in this online program. So you will undoubtedly see more videos with me this term!

All of the instructors and teaching assistants really enjoy helping others learn. So if you’re stuck or having difficulty then please reach out to one of us on Teams, Ed Discussions or by email.

Outside of work, I am an avid rock climber and love being outdoors. I look forward to connecting with you and helping you learn this term.


Student Evaluation of Courses

During Fall, Winter, and Spring term the online Student Learning Experience surveys open to students the Wednesday of week 9 and close the Sunday before Finals Week. Students will receive notification, instructions, and the link through their ONID email. They may also log into the survey via MyOregonState or directly at Survey results are extremely important and are used to help improve courses and the learning experience of future students. Responses are anonymous (unless a student chooses to “sign” their comments, agreeing to relinquish anonymity of written comments) and are not available to instructors until after grades have been posted. The results of scaled questions and signed comments go to both the instructor and their unit head/supervisor. Anonymous (unsigned) comments go to the instructor only.

See the table below for more details on assignments and due dates.
You can also download the syllabus as a pdf.

You can take the Syllabus Quiz once you are registered for the course.


Topic & Content

Due Mon

Due Thurs


Intro/Tools/SQL Practice

(Syllabus Quiz)


Relational DB & Design

Activity 1
Activity 2
Activity 3

Database intro quiz
ER Concepts Quiz
Using ERD & Schema Quiz


Relational Algebra, SQL Intro

Project Step 1 Draft (Proposal, Outline, ERD)

Relational Algebra Quiz
Project Step 1 Review
Activity 1/2/3 - Gradescope Assignment


Intersection tables & SQL JOINS

Quiz: Basic SQL (On Gradescope)

Project Step 1 Final Version (Group / On Canvas)

Activity 4 - Gradescope Assignment
Activity 5/6 - Gradescope Assignment


Database Normalization

Intermediate SQL Assignment (on GradeScope)


Project Step 2 Draft: Normalized Schema + DDL with Sample Data (Group, on Ed Discussions)


Design Project HTML UI

Advanced SQL Assignment (on GradeScope)
Project Step 2 Review

Project Step 3 Draft Version: Design HTML Interface + DML SQL (Group / On Ed Discussion )


Project Development

Project Step 3 Review

Project Step 3 Final Version: Design HTML Interface (Group / On Canvas)


Continue Project Development

Transactions EC

Project Step 4 Draft Version: Implement CRUD for One Entity (Group on Ed Discussions)


Analytical DBs and BI

Project Step 4 Review

Project Step 5 Draft Version: Implement MOST Remaining Entities/Pages (Group on Ed Discussions)


Finish Project & No SQL

Analytical DB and BI Assignment
Project Step 5 Review
SLE Completion
Reflections on Learning Strategies used in CS 340



Finals Week

Project Step 6 (Portfolio Assignment)


Grade letter Percentage floor
A 94
A- 90
B+ 87
B 84
B- 80
C+ 77
C 74
C- 70
D+ 67
D 64
D- 61
F 0


Grading Scale

The final grade will be computed using a weighted average according to the table above and the weighting below.

Note about Partial Credit

In general assignments are not graded such that each piece is worth a fixed portion of the total credit for the assignment. For example, if 40% of the program is non-functional that generally indicates that there is some important concept that has been missed. If that is the case, then the grade will be a 0. You can then resubmit it to earn up to 70% of the assignment credit, but the revised submission must be entirely functional.


Maximizing Credit

You should treat me as a client. I will give you a set of requirements. Requirements can be interpreted differently; this is unavoidable. You have to meet my interpretation of the requirements to get an A. If you have any doubt about what a requirement means, you should ask me to clarify.

Even if you do not plan to do work on the assignment till near the deadline, you should read the requirements as soon as you can to see if anything is ambiguous so you can get clarification while there is still time to act on it.


Working In Groups

Working effectively as part of a team is a requirement for this course. For any group assignment, if you do not submit as a group then you will not receive credit.

Please not that in a group project all group owners individually own all rights, with the caveat that they may owe royalties to others if they individually make money on the code later. See this page for more information on ownership or group projects:


Grade Weighting

The following shows the approximate breakdown of grading assessment for the course.

  • Quizzes - 25%
  • Assignments and activities - 25%
  • Course Project (including participation, e.g. peer reviews) - 50%
  • Extra Credit - 4%


Academic Integrity

The Code of Student Conduct prohibits Academic Misconduct and defines it as:

Any action that misrepresents a student or group’s work, knowledge, or achievement, provides a potential or actual inequitable advantage, or compromises the integrity of the educational process.

To support understanding of what can be included in this definition, the Code further classifies and describes examples of Academic Misconduct, as follows.

Prohibited behaviors include, but are not limited to doing or attempting the following actions:

  • Cheating. Unauthorized assistance, or access to or use of unauthorized materials, information, tools, or study aids. Examples include, but are not limited to, unauthorized collaboration or copying on a test or assignment, using prohibited materials and texts, unapproved use of cell phones, internet, or other electronic devices, etc.
  • Plagiarism. Representing the words or ideas of another person or presenting someone else’s words, data, expressed ideas, or artistry as one’s own. Examples include, but are not limited to, presenting someone else’s opinions and theories as one’s own, using another person’s work or words (including unpublished material) without appropriate source documentation or citation, working jointly on a project and then submitting it as one’s own, etc.
  • Falsification. Fabrication or invention of any information. Examples include, but are not limited to, falsifying research, inventing or falsely altering data, citing fictitious references, falsely recording or reporting attendance, hours, or engagement in activities such as internships, externships, field experiences, clinical activities, etc.
  • Assisting. Any action that helps another engage in academic misconduct. Examples include, but are not limited to, providing materials or assistance without approval, altering someone’s work, grades or academic records, taking a test/doing an assignment for someone else, compelling acquisition, selling, bribing, paying or accepting payment for academic work or assistance that contributes to academic misconduct, etc.
  • Tampering. Interfering with an instructor’s evaluation of work by altering materials or documents, tampering with evaluation tools, or other means of interfering.
  • Multiple submissions of work. Using or submitting work completed for another or previous class or requirement, without appropriate disclosure, citation, and instructor approval.
  • Unauthorized recording and use. Recording and/or dissemination of instructional content without the express permission of the instructor(s), or an approved accommodation coordinated via Disability Access Services.

To support understanding of what can be included in this definition, the Code further classifies and describes examples of Academic Misconduct, including cheating, plagiarism, assisting and others. See the Code of Student Conduct for details.

You are expected to do your own work and demonstrate academic integrity in every aspect of this course. Familiarize yourself with the standards set forth in the OSU Code of Student Conduct Section 4.2. You must only access sources and resources authorized by the instructor. You may not show your work to any other current or future students without the instructor’s authorization. Violations of these expectations or the Code of Student Conduct will be reported to the Office of Student Conduct and Community Standards. If there is any question about whether an act constitutes academic misconduct, it is your responsibility to seek clarification and approval from the instructor prior to acting.


Citing code

Your citation of others code should include:

  • URL of your source
  • Date you retrieved your source
  • Title of the program or application you are using
  • Type (eg. source code, application, full program, etc)
  • Author name(s) if available
  • Code version if available

Here are two methods for citing code from a snippet used from retrieved on December 2, 2020:

  1. You can cite your code in your written report or your README file. Here is an example on how to cite code in a written document:

Sample Format: () () []. Source Web address or publisher information.

Example: Safonte, D (December 2020) Citing source code (Version 1.0) [Source code]

  1. The second method cite your source right within your code using comments.

    Example: a good citation can be observed on lines 1-4 below:

    1 # Citation for the following function:
    2 # Date: 12/02/2020
    3 # Copied from /OR/ Adapted from /OR/ Based on:
    4 # Source URL:


Questions about grades

The TAs will grade all your submissions, unless otherwise noted. If you have any concerns, contact the grader for that specific assignmentvia email as noted in the Where to go for help?. Any concerns about grades should be communicated within 7 days of receiving the grade.


Statement Regarding Students with Disabilities

Accommodations for students with disabilities are determined and approved by Disability Access Services (DAS). If you, as a student, believe you are eligible for accommodations but have not obtained approval, please contact DAS immediately at 541-737-4098 or at DAS notifies students and faculty members of approved academic accommodations and coordinates implementation of those accommodations. While not required, students and faculty members are encouraged to discuss details of the implementation of individual accommodations.


Accessibility of Course Materials

All materials used in this course are intended to be accessible. However, resources available through external providers (i.e., YouTube, websites, etc.) may not fully comply with accessibility standards. If you require accommodations please contact Disability Access Services (DAS).

Additionally, Canvas, the learning management system through which this course is offered, provides a detailed page about how the platform is accessible to students with disabilities.


Late Policy

You must submit all assignments before the due date, even if it is incomplete! However, if your submission is incomplete your grade maybe a Zero, unless you follow these instructions.

  1. Notify the TA that you plan to resubmit it within 3 days (you can notify them by email or in the Canvas comment with your submission).
  2. If you submit a partial fulfillment of the requirements before the due date and then resubmit a revision within 3 days, your grade will reflect your final submission. If you do not resubmit within 3 days, your grade will reflect your original (potentially incomplete) submission.
  3. The exceptions to this are project step drafts, draft reviews, extra credit assignments and the final project step submission(the one that is due in the last week of the term!) ; these must be submitted on time and cannot be revised once the due date has passed. This is because the entire class is working towards their completion and slipping the due date for one student affects the other students who are required to perform reviews and submit project steps per the schedule. 
  4. If you do not submit your first version before the due date, you will receive 0 credit. Exceptions may be made for documented emergencies e.g. hospitalization.


Communication Methods

Ed Discussion
Ed Discussion 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 Ed Discussion. 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. Look below for the Code Sharing policy.
The Teams channel 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 Teams), the TA would put up a message on the Teams channel informing so. If you are sharing code on Teams, look below at the Code Sharing policy.
Any email sent to the instructor about this course must originate with an OSU-issued email account. Email using the OSU-issued email addresses is the only way we can be certain of your identity (and vice versa). 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 have 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.

TA Office Hours

The primary mode of office hours by the TAs, unless otherwise indicated, will be the Teams channel. At the beginning and end of each office hour, the TAs will inform on the above Teams channel.

Times are in PDT.

Time in PST







Prof. Michael Curry


9:00 am –
10:00 am





Prof. Danielle Safonte





8:00 am -
9:00 am


Rajesh Shrestha
1:00 pm -
3:00 pm -
4:00 pm
Amelia Kawasaki
2:00pm -
2:00pm -
Rina Easterday
5:00pm -
5:00pm -
James Cole
10:00 am - 
11:00 am

4:00 pm -
5:00 pm
Angela Ingrassia
9:00 am –
10:00 am
9:00 am –
10:00 am

Katie Russel

5:00pm -
5:00pm -


Contacting the TAs - Teams

To contact Professors or TA, please send a direct message on Teams.


Contacting the Instructor

Office hours with the Instructor are available by appointment.

You can email me at or if you want to schedule a time on Teams. I am very active on Teams and by email so you can usually reach me there pretty quickly.

All technical questions, as well as questions about assignments, quizzes, or anything that you learn in class (unless they are related to your grade), should be posted in Ed Discussions so that all students can benefit from them.


OSU CS Tutoring

Tutoring link:


Guidelines for a Productive and Effective Online Classroom

Students are expected to conduct themselves in the course (e.g., on discussion boards, email) in compliance with the university’s regulations regarding civility. Civility is an essential ingredient for academic discourse. All communications for this course should be conducted constructively, civilly, and respectfully. Differences in beliefs, opinions, and approaches are to be expected. In all you say and do for this course, be professional. Please bring any communications you believe to be in violation of this class policy to the attention of your instructor.

Active interaction with peers and your instructor is essential to success in this online course, paying particular attention to the following:

  • Unless indicated otherwise, please complete the readings and view other instructional materials for each week before participating in the discussion board.

  • Read your posts carefully before submitting them.

  • Be respectful of others and their opinions, valuing diversity in backgrounds, abilities, and experiences.

  • Challenging the ideas held by others is an integral aspect of critical thinking and the academic process. Please word your responses carefully, and recognize that others are expected to challenge your ideas. A positive atmosphere of healthy debate is encouraged.

Communication Timelines

You can expect a response to emails 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 specific the question, the more likely you are to get help.


Code Sharing

You will not get in trouble for sharing code on Ed Discussion or in Teams in order to solve problems. The communication guide actually mandates that you share portions of your code if you want to ask a good question. If you are worried that you are posting too much code, mark it private and ask me to review it. Note that this is a more permissive policy than the standard policy for the program.

You will get in a great deal of trouble if you copy code without citing it. See the policy on plagiarism. Code from lectures is not your own, code from StackOverflow is not your own, code from the node.js documentation is not your own. If it is not your code you must cite it. If you cite it, you must provide documentation in very great detail of what it is doing so that I know you understand the code you are using.


Code editor

Amount of use: Extensive. Used for the Project and some SQL assignments.

Expected knowledge: Proficient

Coverage in class: Extensive. The Week 1 will cover configuring and editing with VS Code. Subsequent coding videos will primarily be in VS Code.

Examples: Visual Studio Code, Moba Xterm, Atom, Sublime Text, Emacs, Vim or TextWrangler.


Diagramming tool

Amount of use: Extensive. Used for drawing all ER diagrams for assignments.

Expected knowledge: Minimal.

Coverage in class: Moderate. The Week 2 material will cover how to use diagramming tools and translating models into a MySQL schema with sample data. and MySQL Workbench for ER diagrams and PhPMyAdmin for schema diagrams. Other options include Microsoft Visio for Windows which is available for free for OSU students and.


Moving files

Amount of use: Moderate. Used for the Project.

Expected knowledge: Working knowledge

Coverage in class: None. You should be able to upload files to your ENGR directory already. You should also know how to set permissions on those files. If not the IT Support has a page explaining how to map your file space to your PC which makes it pretty easy to upload files

Examples: Map ENGR folder to your PC, MobaXTerm or FileZilla


Source code management

Amount of use: Moderate. Used for the Project.

Expected knowledge: Working knowledge

Coverage in class: Minimal. In Week 6 there is a Exploration that covers collaborating with a partner using Git

Examples: GitHub or GitLab.


SSH use.

Amount of use: Moderate. Used for the Project

Expected knowledge: Working knowledge of Linux commands and command line interface

Coverage in class: Very limited. We expect that you know basic Linux commands to navigate and interact with a file system. The videos will demo using the CLI.

Privacy Policies

Follow this link to access Privacy Policies for commonly used external tools that require the user to create an account.

Microsoft Teams

Follow this link to access the Privacy Policy for Microsoft Teams.

Ed Discussion

Follow this link to access the Privacy Policy for Ed Discussion.

Return to the Start Here Module


Course Summary:

Date Details Due