Frequently asked questions about CSCI-4380
Instructor: Sibel Adali
I put together some answers to common questions regarding CSCI-4380 Database Sytems class in general.
What are the prerequisites?
This is an upper level Computer Science course. As result, it assumes a level of academic maturity appropriate for a student in their junior or senior year. It requires a good working knowledge of data structures and algorithms, and proficiency in Python or C++ (equivalent of CSCI 2300 Algorithms).
What book will we use?
Database Systems: The Complete Book (2nd Edition), by Hector Garcia-Molina, Jeffrey D. Ullman and Jennifer Widom, ISBN 978-0131873254. Note that this book is recommended, but not required. You can use any recent database book to study the main concepts.
What are the basic skills I will learn in this class?
Database Systems will teach you a mix of three basic skills. First you will learn about data modeling which will require some software design principles and some knowledge of logic.
Then, you will learn programming. The majority of programming will be SQL, which you will learn from scratch. There will be at least one procedural programming assignment. The language for this assignment is not yet decided, but if a high level programming language is required, I will likely give an option between Python and C++. You must be comfortable with programming to be in this class.
The final part of this class will go into more advanced concepts of how the database management systems are designed. We will learn algorithms behind the scenes and how these impact the design and implementation of databases.
What will be the course format?
You can expect regular homeworks, some programming, some involving paper and pencil assignments. There will be a lot of discussion of pros and cons of different design choices. This is a class that brings together many different concepts from design, implementation to storage options, and forces you to think how they all fit together.
Expect to use Postgresql extensively, work with multiple possibly large and real data sets. Such data sets of come with lots of special cases which shows you what DB programming is like in real life.
In my experience, students who do well in this class have the following knowledge coming in: a basic understanding logic (your basic boolean logic), data structures (binary tree implementation, hashing) and some system level knowledge (like data pages being copied between hard disk and main memory). Expect to get a lot better with logic at the end of class. It is a much better idea to take this after both Algorithms and Computer Organization.
Why should I care?
It is a super useful class for getting internships or jobs. Many students pick up database knowledge on-the-fly, as SQL is an intuitive looking programming language. But, it takes you a bit of time to realize many bad design decisions you can make and the impact they will have on performance. Hopefully we will have plenty of time to discuss those in this class.
If you love it and further your education to eventually become a DBA (database administrator), you will be among the highest paid and most sought after professionals in the computing field.