CSCI 440

Database Systems and Architectures

3 Cr. (Hrs.:3 Lec.)

Advanced concepts in traditional relational database systems are explored, along with alternative database systems including document-oriented, graph-oriented, and object-oriented systems. Database architectures such as distributed, in-memory and replicated are covered, with their contributions to scalability, reliability and fault tolerance. Design considerations such as relational algebras, functional dependencies, normal forms, and query execution are also explored. Lastly, integration of databases into software and the benefits of creating a database API is developed.
Prerequisite: BMIS 375 or CSCI 340 (2nd)


E1. The student should be able to program fluently in a high-level programming language. (CSCI 332)

E2. The student should have a firm understanding of a relational database management system (BMIS 375 or CSCI 340)

E3. The student should understand how to work with data and the data lifecycle (BMIS 375)

Course Outcomes:

R1. Understand functional dependencies and transform a database schema into various normal forms and produce the data definition language (DDL) in the target database system. (CS: 1, 6; SE: 1, 6)

R2. Understand how to use relational algebras to characterize database schema, simplify the schema, understand how queries against these schemata are execute by the database system. (CS: 1, 6; SE: 1, 6)

R3. Explore, design, and implement non-relational database systems, such as document, graph and object-oriented. (CS: 2; SE: 1, 2, 6)

R4. Be introduced to different database architectures related to performance and data integrity requirements. (CS: 2; SE: 2, 3, 4)

R5. Develop a database application programming interface (API) using DDL statements that provide a layer of abstraction between the application and the database system. (CS: 1, 2, 6; SE: 1, 6)

R6. Explore how to profile and measure database system and architecture performance. (CS: 2; SE: 2, 6)

R7. Integrate one or more database systems into an application by creating a database API. (CS: 2; SE: 2, 3, 6)

5-2-1 - Techniques, skills, and tools necessary for computing practice
5-a-1 - Substantial coverage of algorithms and complexity, computer science theory, concepts of programming languages, and software development
5-a-2 - Substantial coverage of at least one general-purpose programming language
5-a-4 - The study of computing-based systems at varying levels of abstraction
5-a-5 - A major project that requires integration and application of knowledge and skills acquired in earlier course work

III-1-2-1 - Computing fundamentals, software design and construction, requirements analysis, security, verification, and validation
III-1-2-2 - Software engineering processes and tools appropriate for the development of complex software systems