Advanced Database Systems Design

I have done a major redesign of the CS 632 class in Summer 2017.

Course No.

CS 632

Sections

102

Title

Advanced Database Systems Design

Course

Website

https://web.njit.edu/~geller/632/

 

Please PRINT the class material before you come to class.

Prerequisite(s)

CS 631 AND

Good knowledge of programming in any modern high-level procedural programming language such as Python, Java or C++.

Instructor

James Geller

·  Office Room No.: 4410 GITC Building

·  Office Phone: 973 596-3383 (I am more likely to reply to email than to phone!!!!)

·  Fax : 973-596-5777 (Nobody is using fax anymore, really.)

·  Email : james.geller@njit.edu

Instructor

Office Hours

MO 2:30 – 4:00 (subject to change)

WE 1:00 – 2:30 (subject to change)

 

FRI 11:30-2:30 BY APPOINTMENT ONLY

 

(Due to frequent travel and meetings I will often NOT be here. Always email me before you come, to make sure that I am really here. )

Description

This course has five parts. 

1) Review your SQL and learn more of it. 
2) Learn PL/SQL. 
3) Study small parts of other languages that are needed in system building. We are interested in systems that have a Web frontend and a relational database backend. For this purpose we will use Django which is programmed in Python. (I will teach a little Python). We will also do practical ETL (Extract-Transform-Load).
4) Study a few advanced topics on databases, such as XML, OODBs, DB security, and performance tuning. 

5) Study JSON and No-SQL databases, especially MongoDB

 

The purpose of the course is to get better in programming in an Oracle environment, especially in PL/SQL and to learn about building systems that have a relational database as a backend and the Web as a frontend. The second purpose is to learn different models of data, such as objects, XML, and JSON.

 

Topics

  • PL/SQL as "normal" language 
  • PL/SQL accessing tables 
  • Using Oracle SQL Developer for Oracle programming
  • Extract-Transform-Load
  • Object-Oriented Modeling 
  • Inserting etc. in PL/SQL 
  • Object-Oriented DBs 
  • Triggers in PL/SQL 
  • Object-Relational DBs 
  • Objects in SQL 
  • GitHub use (brief)
  • HTML (brief)
  • Intro to XML 
  • Into to JSON
  • Database Security 
  • XML in Oracle SQL 
  • Querying XML 
  • JSON in Oracle SQL
  • Introduction to UNIX/LINUX/AFS (shell use) (brief)
  • Introduction vi (brief)
  • Intro to Python (brief)
  • Django
  • No-SQL databases, esp. MongoDB and Neo4J
  • Intro to MongoDB use
  • Indexing and Performance Tuning (brief)

 

Topics are subject to change or omission, depending on time.

Especially this semester as I have little experience with some new material.

Text Book(s)

1) REQUIRED: 
Oracle 10g Programming: A Primer (Paperback) 
by Rajshekhar Sunderraman 
Paperback: 438 pages 
Publisher: Addison Wesley; 
Copyright: 2008 
ISBN: 0-321-46304-8 

If there are not enough copies in the NJIT bookstore, then 
please get it at www.amazon.com or www.barnesandnoble.com. 

2) WEB MATERIAL AND HANDOUTS: 
There will be handouts in class and reading materials as well as videos that can be found on the Web. 

Time & Place

WEDNESDAY 6:00PM – 8:55PM;

KUPFRIAN 209.

Other Info

Exams:

There will be two midterms and one final exam. 


Homework:

There will be four programming homework assignments covering all the material that we are studying in the class.  Late policies will be announced together with the assignments. 

 

In general, there will be late penalties. 

 

Grading: 
The assignments will be assigned points from the following maximum: 

Midterm 1:                                    100 
Midterm 2:                                    100 
Final Exam:                                  200 

 

Programming Homework 1:            40 
Programming Homework 2:            40 
Programming Homework 3:            40 
Programming Homework 4:            50

Other Credit:                                   30 
                                                ______ 
Total                                              600 

 

What is Other Credit?

Occasionally I will give you some work to do in class.

This work will carry credit.  I will announce the details.

 

Extra Credit

I might also give you extra credit for QUICKLY RESPONDING TO MY EMAIL.  Typically I give credit only to the first 5 students who respond. You should always read my email first. J

 

There will be NO other way to get extra credit. The definition of “extra” is that if you already have 600 points, you cannot get more.

Letter Grade:
At the end of the semester, I will add up your total points and curve the results for the whole class. 


The department has voted on a stringent curve for all courses.
 
Only the top 25% of the class should expect an A. 

Furthermore, up to 20% of the class may face a C+, C, or F. 
In my experience, students getting 550 out of 600 points tend to 
be in the top 25%, but this is no guarantee for the future. 

Also note that most students typically get all the points on the 
Homework assignments. Thus your position in the curve and your class grade depend almost entirely on the tests. On the other hand, missing a single homework is highly likely to lower your grade at least one letter grade. 

 

Computer Use:

 

BRING YOUR LAPTOP TO EVERY CLASS.

You have to get an AFS account (ID), if you don't have one. 

 

You will need a printer, Web access, AFS access and a text editor (notepad will do). You will need fast internet access if you work from home.

Media Services can be reached at (973) 596-3005. 

Moodle:

We will not use Moodle this semester.  

Oracle and SQL Developer:

You will use the Oracle database system and PL/SQL.

PL/SQL is part of the normal Oracle distribution.

 

Instructions about SQL Developer are in the class materials web page.

 

Python:

 

NJIT has Python installed. However, I strongly request that you download the Anaconda distribution of Python to your own computer.

 

https://www.continuum.io/downloads

 

MongoDB:

 

I am planning to use MongoDB. As this is the first time, details are still not known.

 

NJIT Passwords:

If there is an NJIT password problem, try this: 
https://mypassword.njit.edu/

This is the UCID password reset.

 

You need a DIFFERENT password for Oracle.

How do you get that different password?

 

Go to: https://mypassword.njit.edu/db

 

In order to work from home on Oracle and Django you need to install VPN. 
See Here: http://telecom.njit.edu/vpn/

 

The computer we are using is called prophet.njit.edu
The connection identifier that you will be asked for is course. 

Furthermore, you can get extensive explanations of the ORACLE setup by going to:  http://ist.njit.edu/support/db/oracle.php


Cheating

The NJIT Honor Code will be upheld. 

Any violation will be brought to the immediate attention of the Dean of Students. 

Cheating on an assignment or exam will of course result in 0 credit. 

You may "talk" about Homework assignments with each other. Where does talking end and cheating start? You may NOT copy lines of code from anybody. You may NOT use code in your program where you don't understand WHY it works, even if it works, and even if you wrote it yourself. 

A few years ago I caught a student who offered my homework on a commercial (bidding) Web site. In other words, he paid money to have somebody else do my assignments for him. I will be checking for this, and I will have no mercy if I catch you. The student in question was failed out of the course. Who knows, the person bidding to do your homework might be me. 

In addition, I will give questions out of the homework assignments on the midterm and final exam. If your answers on the exams are substantially wrong, even though you did the homework correctly I might question you about the homework and reduce your homework credit to zero, from whatever it was before.