Principles of Databases (Graduate)

list Preamble

info Description

This course expands on the theory, design, and programming of database systems using relational databases, while also teaching students how to work with their non-relational — or Nosql — counterparts. Modern web sites, computer applications, and other technologies use databases, such as sqLite, Postgresql, and Mongodb, all of which we’ll work with to some significance throughout the semester with browser interfaces. We’ll also cover a detailed refresher of relational database concepts, including advanced relational algebra, as they pertain to sql, while making comparisons with document-oriented databases, such as xml and json. Students will interact with all databases using a command line interface.

list Learning Outcomes

Upon successful completion of this course, students will understand...

file_download Software Requirements

All the software required for this course is free and listed below.

MySQL (Mac, Windows, Linux)

Download Mysql from https://dev.mysql.com/downloads/mysql/. Pay special attention to the correct version of Mysql for your os.

SQLite (Mac, Windows, Linux, Android, WebAssembly)

You may already have sqLite. Run sqlite3 from your command line interface to check. Otherwise, download it from https://www.sqlite.org/download.html.

PostgreSQL (Mac, Windows, Linux, Unix)

Download Postgresql, known more commonly as “postgres”, from https://www.postgresql.org/download/.

Node (Mac, Windows, Linux)

Node.js is the back-end JavaScript runtime environment that we’ll use alongside (and sometimes instead of) the browser to work with JavaScript. Download the latest stable release from nodejs.org and follow the default instructions. Note: Installing Node also installs npm, Node’s package manager.

MongoDB (Mac, Windows, Linux)

Download Mongodb from https://www.mongodb.com/products/self-managed/community-edition. Ensure you’re downloading the Community Edition, which is for local development.

Package Manager (Mac, Windows)

Package managers provide an easy way to install software via your cli from a single registry. Install Homebrew for macos via The Terminal from https://brew.sh/; install Chocolatey for Windows via PowerShell from https://chocolatey.org/install.

Git Client (Mac, Windows, Linux)

All in-class examples, assignments, and help is done via GitHub. Download the client for your computer here.

Text Editor (Mac, Windows, Linux)

The code you write will require a text editor. Although there are many on the market, such as Sublime Text (nagware), for example, vs Code (open source) is the only editor supported in class. Download the Linux, Windows, or macOS version from https://code.visualstudio.com/.

EditorConfig (Mac, Windows, Linux)

EditorConfig is a tool that enforces consistent coding styles for everyone who works on a codebase. In our case, that codebase consists of all the examples in class and all the assignments you’ll submit throughout the semester. EditorConfig consists of an extension and a configuration file (.editorconfig) that goes in your home — or project — folder. Some editors and ides have EditorConfig built in. vs Code, unfortunately, is not one of them. Install the EditorConfig extension for vs Code from here, then download this .editorconfig file and place it in your home folder. Ensure the file name is exactly .editorconfig, starting with a dot and without a file extension.

Fonts (Mac, Windows, and Linux)

In addition to the stock issue, monospace/fixed-width fonts included with your os, here are a few more fonts to explore in your text editors:

IBM Plex | Ubuntu Mono | Fira Mono | Anonymous Pro | Inconsolata

menu_book Textbook

There is no textbook for this course. Online readings will be provided throughout the semester.

calendar_month Schedule

Important Notes

The University treats absences related to covid-19 as excused absences. Consequently, you’ll need to get notes from someone in class, as mentioned in the section of this syllabus marked Advice on Succeeding in Class. There will not be a streaming video option for anyone missing class.

Notable Dates

The weekly schedule for the semester, complete with topics and readings.
Week Class Topics Homework
1 Mon
  • Thorough syllabus breakdown
  • Software installfest
  • Carefully re-read the syllabus to ensure you’re aware of all the requirements for the course.
  • If you don’t already have a GitHub account, open one before the next class.
Wed
  • Software installation verification
  • Database fundamentals refresher
  • Updated week of class
2 Mon
No Class
None
Wed
  • Relations in sql/Mysql
  • Data Types
  • Table Declarations
  • Updated week of class
3 Mon
  • Modifying Relation Schemas
  • Default Values
  • Declaring Keys
  • Updated week of class
Wed
  • Schemas refresher
  • crud operations
  • Updated week of class
4 Mon
  • Relational algebra refresher
  • More sql/Mysql
  • Updated week of class
Wed
  • Working with sqLite
  • Intro to php
  • Working with php and sqLite
  • Updated week of class
5 Mon
  • More php and sqLite
  • Working with sqLite within encrypted containers
  • Updated week of class
Wed
  • An intro to document-based databases: json and xml
  • Assignment 1 due
  • Updated week of class
6 Mon
  • Parsing json with php
  • Intro to Postgres
  • Updated week of class
Wed
  • More on Postgres
  • Updated week of class
7 Mon
  • Drawing equivalencies between schemas and relational algebraic equations
  • Updated week of class
Wed
  • More advanced relational algebraic equations
  • More complex sql/Mysql statements
  • Updated week of class
8 Mon
  • Intro to Mongodb
  • The difference between relational (Mysql) and non-relational (Mongodb) databases
  • Updated week of class
Wed
  • More on Mongodb
  • Updated week of class
9 Mon
  • More on Mongodb
  • Updated week of class
Wed
  • Parsing Mongodb with JavaScript
  • Assignment 2 due
  • Updated week of class
10 Mon
  • The lamp stack explained
  • The mean and mern stacks explained
  • Updated week of class
Wed
  • The mvc software design pattern explained
  • Updated week of class
11 Mon
  • Intro to Node.js
  • Parsing Mongodb with Node
  • Updated week of class
Wed
  • More on Mongodb
  • More on Mysql
  • Updated week of class
12 Mon
  • Working with indexes in Mysql
  • Updated week of class
Wed
  • More on indexes in Mysql
  • Updated week of class
13 Mon
  • sqLite review
  • Updated week of class
Wed
  • Postgres review
  • Assignment 3 due
  • Updated week of class
14 Mon
No class
None
Wed
No class
None
15 Mon
  • Mongodb review
  • Updated week of class
Wed
  • Open lab
  • Class evaluations
  • Updated week of class
16 Mon
Final project due
Enjoy your break!

assignment Assignments

The assignments portion of your final grade consists of three homework-type assignments and one final project. (See the Grading Formula section to learn what percentage of your final grade each is worth.)

Note: Broken links in the list below will be updated once each assignment is assigned a due date.

info Grading

Your grade for this course will be computed using the following formula:

  1. Assignments (45%)
    • Assignment I — 15%
    • Assignment II — 15%
    • Assignment III — 15%
  2. Final project (45%)
  3. Participation (10%)

balance Class Policies

psychology No AI Use in Class

The use of generative ai tools is strictly forbidden in this course. All programming assignments — and any labs — associated with this course must be completed without the assistance of ai-generated content. This policy is in place to ensure that the work submitted is authentically yours and reflects your personal understanding and capabilities. Violations of this policy will be considered academic dishonesty and will be subject to disciplinary actions as outlined in the university’s academic honesty policy.

warning Academic Honesty

Cheating of any kind will not be tolerated in this course; make certain that all the work you submit is your own. Refresh your understanding of the college’s policy on academic honesty.

accessible Students with Disabilities

If you have a documented disability for which you are requesting accommodation, you are encouraged to contact Access-Ability Services as soon as possible by calling 860.768.4312, emailing tlopez@hartford.edu, or by stopping by the Access-Ability Services office in Auerbach Hall, Room 209. If your request for accommodations is approved, an accommodation letter will be emailed to your instructor(s) upon your request. Please discuss your accommodations with the instructor as soon as possible to make appropriate arrangements. Note: Student requests for accommodations must be filed each semester. Visit https://www.hartford.edu/academics/academic-support/accessibility-services/ and click the “Registering” link for more info and a link to a video that walks you through the process.

balance Title IX and Sexual Assault

Sexual violence and other forms of sexual misconduct and harassment, including stalking and intimate partner violence, are prohibited under Title ix, federal and state law, and University of Hartford policy. Information on the University’s policies against sexual violence can be found at https://www.hartford.edu/about/policies/title-ix/. Resources regarding sexual violence can be found at https://www.hartford.edu/about/policies/title-ix/on-off-campus-resources.aspx

Note: University of Hartford faculty, staff, and ras are required to report incidents of sexual misconduct to the Title ix Office (title9@hartford.edu). For further information on The University’s policies and resources, please contact Jason Martinez (860.768.5255; jamartine@hartford.edu) or Justin Bell (860.768.4880; jbell@hartford.edu).

psychology Mental Health and Well-Being

Mental Health is an important aspect of students’ well-being and integral to positive academic experiences and success. If, during the semester, you experience difficulties and would like support, consider contacting the University of Hartford’s caps, or Counseling and Psychological Services, which offers a range of short-term counseling services available to full-time undergraduate students at no additional cost, and to part-time undergraduate and graduate students for a small fee.

caps is located in Gengras Student Union, Room 313 map, and can be reached by calling 860.768.4482 or emailing Liz Inkel at inkel@hartford.edu. Office hours are Monday – Friday, 8:30 AM – 4:30 PM.

info Advice on Succeeding in Class

Read over the following to understand procedures for maximizing your chances of succeeding in class.

door_front Office Hours

I meet students on an appointment basis via video conference during the times listed here. (Click here for videoconferencing details.) Other times on Thursdays and Fridays are available, also. Email vanegas@hartford.edu to make an appointment.

contact_mail Contact

Nowadays, I only use email for emergency situations, such as a pet emergencies, personal tragedies, etc. For matters related to our course, you’re advised to see me before or after class, during my office hours, or by appointment. My contact info is listed in the Preamble.