Many of the reviews so far are unfair and lack perspective. If you're into thinking, actually understanding why, and experiencing what it is like to work as a software engineer, Professor Ferguson's class is the one to take. Yes, the instructions are vague. Do you think your manager at work will give you a step-by-step outline of what to do? If you're at an elite organization that solves tough problems in the world (honestly doesn't that sound nicer than being a coding monkey???) then your manager will say, here is the exciting problem - solve it. Your will need to then reach out to people at your organization, do research online, use your brain. Yes, if you're new at a project and your boss is good, you can reach out to your boss AFTER you exhausted the other avenues. Otherwise, why does your boss need you over someone else if they always need to hand-hold you ever step of the way? Professor Ferguson stands in the middle where he provides helper code, provides recorded "how-to" examples to get you started, and is always there to help, whenever you ask. I've actually never seen a professor make himself so available to his students. Your manager probably won't even give you as much time! If you're working on something important and novel after school, often there is no one "right" answer. Prof. Ferguson involves some such questions on his homework. Yet, instead of being excited, I saw many students get flustered and not know what to do when they are asked to think for themselves. For example, he asked students to create an ER diagram on some data. Students asked him questions such as "is there a one-to-many relationship for x and y data?" That is a coding monkey question! Ferguson pushes students to up-level their thinking to that of a best-in-class engineer. For example, the best engineers out there say, "based on what we are trying to achieve and what data we have, here is my recommendation on how we organize it." There are many other points on why Prof. Ferguson is one of the top professors I've ever taken, but I'll leave you with one more. Many professors tell you to memorize some rule, you memorize it, you answer on the test, and then you forget. Professor Ferguson asks you questions where you end up understanding the why and internalize the why. For example, everyone who has taken a databases class knows the different types of data storage, such as a star schema. However, do you actually know how to take some data that is not pristine, wrangle it into a star schema, and then query it? In what cases would you use a star schema over another layout? What data should actually be on what table? How do you take the data from Third Normal Form to a Star Schema? I bet if you didn't take Ferguson's class then you will need your hand held when you start working as you wouldn't actually know the answers.
Someone posted this on Columbia Confessions last semester and it was the most accurate depiction of my experience in the class, so I thought I would share it here as well for future students: "It’s 2035. You receive an email titled “COMS4111 Final. After spending 3 hours figuring out how to install a Python 3 emulator, you finally manage to open the Jupyter Notebook. Question 1 has 27 parts. The instructions have been removed in order to shorten the exam length. You get another email from Ferguson saying he’s holding office hours 3 minutes before his wedding. A single tear rolls down your cheek. “Just like the industry, you whisper." Let me give you a quick high school style literary analysis of this passage to help those thinking about taking the class understand better. The author uses hyperbole when they write "2035" as a reference to how late many of the assignments, grades, etc. are released despite the teaching staff claiming they will be released the next day. The author then goes on to evoke the pain of setup in this class: "spending 3 hours figuring out how to install a Python 3 emulator," as much of your time will be spent fighting with your computer to just get the software you have to use connected and running. The assignments are very long with many parts, and the instructions are very confusing, a point alluded to in the metaphor that the instructions are almost as if they have been "removed". As the author illustrates, office hours do happen at random times and you have to be ready to hop on the call at any time of day, and possibly you too will get the chance to hear about his girlfriend. The author then begins to conclude this masterpiece by emphasizing the visceral emotions one feels through the imagery of a teardrop. This effect is compounded by the author's choice to use the second person throughout the passage. Finally, you are left reminded of Ferguson's constant belief that the undefined aspects of the assignments and acceptance of most solutions as long as they work are "just like in industry". By using such evocative imagery, the author, dare I say the artist, is able to capture not just arbitrary details, but the human experience of taking Ferguson's class. All in all, it was a decent but very chaotic and time-consuming class.
I think Ferguson's other reviews sum up his class pretty well. He is a very nice guy. I have a learning disability and he reached in the very beginning the semester about it, which meant a lot because I feel like I usually have to fight to get the accommodations I'm supposed to get (It's surprising the hoops you have to jump through with some teachers to get the extra time accommodations for tests that DS has already decided you need). That said his homework will take you forever. They aren't even that hard, just very tedious. There will be a bunch of typos. TAs and the Prof will give you different answers to a clarification question. Questions are often answered in one long Piazza thread instead of separate posts, which makes it annoying to search for. The lecturers are pretty boring and often have only 10 minutes of useful content. OH and the informal recitations with the Professor are basically mandatory. I also haven't gotten my grade back yet, but according to everyone I've talked to, even the TAs, most people get a grade in the A range... I just don't know if the time I had to sink into the class just to get it all completed (not even well lol) was worth it.
Ok I know this class was a bit contentious and it wasn't perfect but I actually liked it???? I think 90% of this had to do with Prof Ross's Australian accent. I cannot confidently say I would have the same feeling if Prof Ross did not have an accent. But I thought his lectures were clear and he had a good command of the material. I thought the homeworks helped to enforce the lectures and they always reflected what was taught in lecture, there were never any surprises except for when we had to use formulas in the textbook but Prof Ross made it clear that was the case. The TAs were kinda bad tbh, there was one standout in my opinion and the rest were hit or miss. As long as you stay on top of lecture and homeworks, you'll be fine. I learned a lot of really relevant skills - before this class I didn't know how tf to route db calls through a web app but that's literally what you do for the front end portion of the project and that's also literally how web apps are built!!! Pretty cool. The only downside was yeah if you don't have prior experience with flask + html (I did not) then you're going to be looking up a lot of stuff if you choose to do the front end portion of the project. But it's worth it because now I feel like I have an infinitely larger appreciation for how this stuff actually works. Prof Ross is not the most approachable professor ever but he is helpful if you go to his office hours for questions or chat him on Piazza.
He's a good professor and once you actually get to know him, a nice guy, but the class itself is a total disorganized mess. I can understand how challenging it would be to design an introductory class based on basic database/SQL concepts because, well, it's not all that challenging, to begin with. SQL really isn't a programming language at all and it's very easy to learn. Basic concepts like "data cleanup" and writing the correct SQL query to get the data you want are really not all that hard. Basically, he could spend two or three weeks running through a few examples of various SQL queries/terms, show everyone how to set up basic database software, run through a few basic definitions from the textbook, and that would be the entire class. Because he does not want to run the class this way, (not to mention it would be far too short), you're basically stuck having to google your way through the majority of the class to teach yourself the concepts that were given very little, if any, time in a lecture. Going to the various TA office hours becomes mandatory as well. Thus, much of his lectures are "filler" material that hardly pertains to the class assignments/homework at all. You'll often find yourself saying: "Well, that was nice to know and quite interesting, but how does this relate to the class assignments?" Well, it doesn't, because again, the basic concepts of this class are not really all that hard and can be explained in a few weeks, so he fills each class with things that are certainly database related, but are not useful at all for doing the homework. Again, from a class design perspective, I can see why he does this, but it makes going to the lectures tedious and incredibly boring. The main problem with this professor is how INCREDIBLY long the assignments take. You'll spend hours on google and working with the TA's to complete the overly long assignments not only because you'll have to teach yourself how to do them, but also trying to resolve the various technical/error messages that will arise as you do the assignments. I think I spent more time trying to resolve various error messages in MySQL Workbench than I did learning about databases. Oh, and the midterm was one of the most stressful experiences of my entire life, mainly because of the way he phrases/asks the questions. The way he words the questions are so ambiguous that you'll be on piazza constantly looking for clarification on whether your approach to the question is correct or not. Doing the assignment involves knowing lots of SQL and getting your queries to run right. To make things more frustrating, every question has a subpart, and those subparts have subparts, so the entire exam is VERY long. The entire assignment took me somewhere in the range of 30+ hours and it was a disaster. Also, when do you want clarification on a specific question, you'll find that you get different answers from different people. If you ask Prof. Ferguson, he'll give you one answer, but the head TA will give you a different answer, and another TA will give you a totally different answer, and maybe another TA will tell you something else entirely. Basically, you'll quickly discover that nobody really knows what is going on or has any idea how to resolve the issues you/the large majority of the class are having, so you'll just become even more confused. Making annotations that accompany the answers you give in the assignments is basically mandatory because nobody really knows what is going on. I hate to be so negative, as he's a nice guy and all, but by the end of the class, I think he realized just how much of an absolute and total mess this class turned out to be and just gave the large majority of the class an A. Oh well!
Prof. Ferguson is a nice guy and seems to care for his students' learning. However if would like a well organized course instead of an unimaginably chaotic mess I suggest you try one of the other sections.
This guy needs to have his silver nugget taken away. His good CULPA reviews are deceptive (notice all the disagrees). This class was my worst CS experience at Columbia so far -- the reviews are right that Ferguson is extremely kind and accommodating of tough circumstances; however, that doesn't balance his extremely out of touch teaching style. The lectures are messy and unorganized, don't help with the homework, and he often attributes his disorganization to "helping us gain real-world CS experience." There's a very clear line between encouraging students to make their own design decisions and giving so little instructions that Piazza becomes a hot mess. Throughout the course, I found the assignments to not be conducive to learning at all. You're basically expected to self-learn SQL, Neo4j, and various complicated database system concepts with conflicting instructions from the TAs. The midterm was ten questions with up to 12 sub-questions for each question and further sub-questions for those sub-questions taking 40+ hours to complete. Assignments take multiple (3+) weeks to be returned and are basically impossible to do without further TA/instructor help. I will say that Ferguson makes himself extremely available (to the point of impromptu 4 AM office hours) and towards the end of the semester, realized how difficult the assignments were, thereby giving us 5 free extra credit points. However, that doesn't deny how difficult this class was and how little it taught me.
One of the best professors I've had at Columbia. He truly cares about his students, explains concepts clearly, and I think he does a good job of making himself available for OH. Sometimes he sends out an email indicating that he's having office hours in 20min which is short notice but if you are really having trouble, he's open to meeting with you one on one and help you solve your problem. Also, there were office hours pretty much every day thanks to the TAs. Truly a great professor.
Taking Professor Ferguson's section of Intro to Databases was such a mixed experience. Let me start with the good: - Professor Ferguson is awesome. He has an interesting sense of humor which some people find sassy, but I love it. He's also incredibly kind towards students, always willing to help, and is one of the most understanding professor's I've had. - He also holds an insane number of OHs, which is really helpful around due dates. It feels like he has an OH whenever he's free. He'll only announce them a couple hours in advance though, so you'll need to keep an eye on your inbox. - His section of Databases is a lot less theory-oriented, which means less time spent memorizing arcane definitions, and more time spent on working through real-world examples. At least for me, that's a big plus. And because Professor Ferguson has such extensive industry experience, it provides an interesting perspective that some other CS professors don't offer. Then, there's the bad: - Lectures are dry. Professor Ferguson admits it himself, so he usually skims through 200 slides in 20 minutes, skipping most of the concepts. His expectation is that you Google it yourself when doing the homework, but this means you aren't learning the content systematically. Instead, you'll be scraping scattered tidbits off of the Internet, which sort of adds up by the end of the semester, but the learning experience ultimately feels unsubstantive and hollow. - Homework assignments are incredibly vague and disorganized. If all the instructions and expectations were clear, they would be pretty easy (at least compared to other CS classes I've taken). But I ended up spending days trying to figure out what we were expected to do for each question and obsessively refreshing Piazza for updates. - This would be fine if at least the instructions were consistent. However, the TAs, Head TAs, and professor often seemed to be on different pages. For example, for a homework question, a TA's clarification on Piazza would be different from what the Head TAs explained during recitation, which would be different from what Professor Ferguson went over in lecture. This was pretty common, and incredibly frustrating because now I needed to spend even more time attending multiple OHs and scrolling through Piazza to gauge the "consensus among the TAs", as strange as that sounds. I also often had to rewrite my solutions whenever conflicting "clarifications" were made by different people. All of this isn't to say that this is a bad class, it's just poorly organized. At the end of the day, I think I would recommend it because I did learn some useful things. However, just know that all the inconsistencies and vagueness will be incredibly frustrating and anxiety-inducing, especially if you are a perfectionist type of person. Grade-wise, pretty fair, not too bad. Not really a factor you should consider compared to the stuff I've mentioned above.
Honestly one of the worst classes I've taken. Lectures are so slow and the assignments are extremely confusing. Very disappointing
Professor Donald is absolutely one of the best professors I have met in CU. He is a very kind person and really takes care of his students. The course delivery is good and course materials are well organized in his GitHub repo. His homework does match with the content he teach in class, so as long as you listen to his class carefully, you will be okay. Midterm and final are take-home exams, which in general contains around ten coding or short-answer questions, which are pretty like homework questions. Donald is the most accessible professor who will almost hold office hour everyday. You can easily find out some OH time spots. Also Donald holds review session to help students review class content about a week before homework deadline. He also gives some useful hints to guarantee students to be on the right track. He replies email very quick and could solve your question in a very short time. I really appreciate Donald to provide a good database class and I strongly recommend his DB class to all students.
This is the most disorganized course I've taken so far. Homework instructions are unclear, piazza management is a mess, lectures are so slow and boring. He is probably the worst professor I've taken class with. Just avoid him.
This is the most disorganized course I've taken. There is no clear homework submission detail, no clear expectation for the homework, no clear instructions and a super super super messy Piazza. This professor use piazza post as extra credit, leading the piazza posts to a place full of duplicated and junky messages. Please just avoid this professor if possible, super bad experience
TLDR: Very good professor. Getting an A is more than doable. Longer Review: Even though the lectures might not be that relevant for the homework at times, they are very interesting and it is good to learn from a leader in the field like him. The class is divided into a programming track and a non programming track. Unless you are a CS major or really want to get good at programming databases, I would take the non programming track as it still is has tons of SQL. For both tracks, the homework seems really confusing at first. This causes lots of stress. However, Professor Ferguson makes videos which really really help. Also, he and the TAs hold many office hours and are always available to help. You also get a certain amount of late days (I believe it is 5?). As long as you don't procrastinate and use the videos & office hours, the homework's become very doable. If you procrastinate and don't use the help provided, you better be really smart otherwise you will do pretty poorly.
I really enjoyed this class, and Professor Ferguson was an excellent instructor. He was also very available: he held in-person or video office hours all the time, especially near homework or exam deadlines. Also, all of his lectures and online OH were videoed and posted to Courseworks. I got the impression taking this class that other sections may be more focused on theory than practice - in this section, most of the homework (and lectures) were focused on how to work with databases than learning database theory. We did spend some time on theory, but as little as Professor Ferguson thought he could get away with, which I really liked. Most of the semester was spent learning SQL, but we spent some time on relational algebra, a little bit of time on graph databases toward the end of the semester. About half of the homeworks were programming projects in python, using pymysql. Time consuming, but certainly doable and taught me a lot. There was sometimes some ambiguity in the project guidelines, which generated a lot of questions on Piazza, but I think the consensus from Professor Ferguson and the TAs was that you could make whatever design decisions you thought were wise, as long as you included your rational in the README. Basically, I thought the assignments and grading were very fair. Later homeworks (and both exams) were turned in in the form of jupyter notebooks, and a lot of the lectures were available for download in that format; it was a bit of a pain to set up at first but absolutely necessary. Components of some homeworks were also to submit complex SQL queries. Professor Ferguson was also just really understanding and adaptable to different circumstances. If you really need an extension, he will almost certainly grant it. Also willing to listen to student feedback in general: when I took the class (fall 2019) Professor Ferguson used a baseball database for an in-class example nearly the entire semester and as the database for several homeworks. I personally didn't mind this, but some students found the specific terminology to be confusing. Professor Ferguson took this into account and said he would not plan to use this database in the same way in future semesters.
Really excellent overall professor: clear, well organized, understanding. If you're interested in DB he is a great choice of prof
The professor was pretty good, he tried to add humor to his lectures but his accent was a little difficult to understand. He is overall a nice guy, probably your average professor. However, the TA's are literal faggots. If you see these TA's in your future classes, make sure to drop immediately: Fei Peng Atif Ahmed Jingjing Ling Kilol Gupta Guanlin Zhou Sajal Khandelwal Kevin Raji Cherian
Absolutely do not take any course with this professor. He is incredibly nice, but his lectures are awful. I attended every lecture, but the slides are all completely useless and this class could be better learnt through youtube tutorials. The coursework is extremely light, with only a couple of homework assignments and a final project. The problem sets can take a little while, so don't push them off until the last minute. His grading is extremely brutal and his exams don't accurately reflect the course. You're going to have a lot of graduate students with database experience who are going to slaughter the exams, leaving the worst curve I have ever experienced. Many of the people I knew in this class received C's or below despite performing at a seemingly decent level throughout the semester. It all comes down to how well you do on the midterm and final, which are not easy at all. Also, Biliris extremely unapproachable. I attempted to talk to him about a grade and he ignored me for a long time, and then told me that he can't give out all good grades and there were too many advanced student who took the course as a gut class. Overall, worst experience at Columbia by far and I would avoid it 100% if you can.
Maybe Eugene Wu is a good professor or a good researcher, but apparently not a good teacher. He always makes simple things confusing in his class. There are many times I couldn't get his points. But after class, I always get handle of those puzzle quickly by searching related info in Google. Many of my classmates faced the same condition. Therefore I don't recommend this professor.
I think Biliris is a fairly strong professor and, given that it was a 2.5 hour class, I enjoyed it as much as I possibly could. As with all professors he has his pros and cons. Biliris is a ball or energy and a personality in the classroom and undeniably cares about his students. He responds to questions on Piazza fairly quickly, made a point to get to know people in the class. He even joked that we could call him if going through a breakup. He is very energetic and enthusiastic about the material and the examples, and he tends to be good at making things quite simple, so the combination is good. He also continually involves students of the classroom. He will ask for suggestions on how to solve something, ask someone else to point out flaws, etc. This keeps the room fairly engaged for a class that is 2.5 hrs long. Biliris welcomes student questions in lectures and will always stop to answer a question before moving on. This both a pro and a con. Sometimes I feel like the class got stuck because we would keep harping on an issue that was either not extremely relevant or simply repetitive. However, the good news is that, if you are willing to raise your hand, you will always walk out of class knowing what is going on. Unfortunately, Biliris sometimes either struggles to understand a student question or misinterprets the question. As such, you have to be persistent with rephrasing till he understands the question, at which point he usually does a solid job of answering. The workload is quite light. There are 4 light homework assisgnments, two projects, a midterm and a final. The first project is significantly more in depth than the second, but the time allocated for the projects reflects that. The midterm is exactly the same in structure as the practice midterm, which makes it easy to study for. No practice final is given, and the material was harder and more technical, so make sure to spend time on Query Optimization when studying for the final. His grading tends to be fairly generous in my view, and I think the level of CS ability in this class is lower than most other CS classes, since it is required for OR undergrads and many masters students seemed to come from weak data structures backgrounds (we spent 30 minutes discussing the complexity of a hash table). Overall, assuming you go to class and pay attention, this is a low workload class apart from projects and exams.
Professor Gravano is an excellent lecturer. His lectures are very clear, and he does a good job of answering questions. He is also very friendly and helpful during office hours and maintains an active presence on Piazza. The only thing I didn't really enjoy was that he recycled some of the old databases lecture slides, which are sometimes unclear (his own lectures are much more helpful). Definitely show up to class, since the textbook, while helpful, contains more than you need to know and the slides are not very helpful on their own. Also, he offers homework and project grace late days which, while helpful, were not always allowed to be used on certain homework and project parts, which kind of defeats the purpose in some way. Despite my nitpicking, Gravano is still a great professor!
The material is easy. The teacher is acceptable. But be aware: your grades will depend a lot on how CAREFUL you are in following the instructions of homeworks/exams.
Personal idea, this course should be considered as one of the simplest course for grad level, especially when you are in your last semester and want to spend more time on job hunting, or when you are dealing with other heavy courses like OS... Besides, 4111 now is a core! Should it be core earlier, why bothering get trapped by OS. (Holly #@$@$#!, although I admit one can really improve a lot by taking OS.) Yeah, prof. has an accent, but you have textbook, read it! After all, databases system are not designed to confusing people. We are not at Kindergarten and need to be instructed with everything. The projects are not that hard. The homework are easy. The midterm and final are OK if you know what you've learnt throughout the semester. You don't really need prior experience with databases. Last but not least, firms do pay attention to the relational databases project you are working on, understand the project and explain well during an interview, it will land you a full-time job or internship. Of course, we have a lot of new generation databases like cassandra, MongoDB, etc. The relational database, however, just like ball pen, simple but remains powerful.
The WORST professor ever. His accent made the lectures hard for us to understand. Besides, when we tried to ask questions most of the time he wouldn't answer that but made fun of us. His class was totally not helpful. You could read the slides by yourself and don't have to waste your time going to his class. You'd better check if your teammate could follow up otherwise it's likely that you will understand nothing in his class. The curve is bad, many people had got C's.
This class epitomizes the worst college class where you get a bunch of theoretical knowledge and NO application. We learned about functional dependencies within databases, and now I can show what a functional dependency is...but what is that within an actual database and how does this apply to SQL? We spent 2-3 lectures on the theory and underlying implementation of indexes....but didn't even touch how to actually create an index in SQL. We didn't introduce us to any of the numerous databases available (MySQL, Postgres, SQLite, ...) and had us play with a variant of an Oracle database that I'm pretty sure NO ONE uses in industry. And now I'm thrown out into the real world with a hammer and I have no idea how to use it. A month later I'll probably be nailing my finger into the wall by accident. Besides that, the professor creates slides that are basically copy-pasted from the textbook (and the textbook is horrible with typos, mathematical notation gibberish with no explanation, and no real-world application mentions). He hates taking questions, his TAs are half of the time absent from their OHs, and he obviously doesn't care about the class. I guess he's funny though (if you like "haha wow I can't believe I'm sitting in this classroom funny"). If you plan on taking this course I recommend the following advice. 1) Never go to class, and just read the textbook. 2) The textbook is horrible so find online slides, lecture videos, and other SQL/databases notes to actually understand the textbook What does this advice mean? Basically, if you take this class you will be paying a few thousand dollars in tuition to find and learn everything on your own.
Professor Gravano is definitely one of the best professors I've had. His lectures are clear, precise, and occasionally humorous. He's very receptive to questions in class and often responds to questions both via e-mail and the discussion board, which is rare in my experience. He uses slides (available online) for much of the introductory portion of the course, but often switches to the blackboard to work out particular examples. The latter half of the course was taught almost entirely on the blackboard. Corresponding book sections are listed for each lecture, but going to class or having a friend to take notes for you is important, as he sometimes he covers more or less material than is presented in the corresponding book chapters. The textbook (Ramakrishnan + Gehrke, 3e) is quite good, despite the many reviews you'll find online saying otherwise. While you will get a project mentor for your two projects, in reality there will be very little interaction with the TAs unless you seek it.
Yes, his command over English is not the best. Yes, he does take digs at what students say if he doesn't understand them. But overall I wouldn't describe Biliris and this class as awful. His lectures are 2.5 hour long rambles, but not without comical interludes. His jokes are often funny, and he gives a ten minute break in the middle of class, which often extended to fifteen. Having said that, you can manage even without ever going to class, so apart from the few jokes there's very little value addition by his lectures. The class material itself is interesting. It c, ould have been presented better (He reuses slides from several years ago, and doesn't even change the semester in the footer), but he has his limitations in teaching ability, and so you just need to make do with it. The four homework assignments are fairly easily. The projects can take time, but if your partner isn't completely lost, you can divide up the work and finish it over the course of a night. The exams are both fair, but of course, there's thinking involved, so it's easy to panic if things aren't going your way. If you're not a CS major, I'd recommend to buy the book. His lecture slides are essentially a summary of the book, but there are some concepts that aren't very clearly explained in his slides. If you were sleeping in class (or absent, like I was), the slides will be of very little help in such instances. I can't say whether Biliris genuinely cares about this class or not, but he definitely gives the impression that he cares about the students. In our first class, he announced that we could call him up at any time before 11PMexcept if we were going through a breakup, in which case he said feel free to call me even after. In summary: his lectures are pointless. But he's a nice chap. His material is interesting. The workload: not too bad.
Absolutely awful. His lectures are boring as shit and he doesn't actually realize that a 2.5 hour class can be taught in more than 8 powerpoint slides (literally). For some reason, he's obsessed with Barbados too and won't stop talking about it. But now onto the real stuff: Don't bother going to class. Read his lectures that he posts online (takes about 30 min) and save yourself the other 2 hours. I can't stress enough how useless his lectures were. It's basically like taking a class online, you just have to show up for the midterm and final. The material is actually extremely useful and somewhat interesting. Luckily though, the material is easy and there's not much of it. There's a grand total of 10 short lectures (only 9 of them are tested on), compared to other classes that have about 25 a semester. The average won't be that high because you're with a bunch of IEOR majors and grad students that don't know how to program. The 4 homeworks can be tricky at times, but honestly not too bad. The group projects are relatively easy and straightforward. You just have to demonstrate that your projects contain every concept that was taught in class, regardless of whether or not your Database schema will benefit with it (i.e. Aggregation is great in theory, but NOBODY puts it into practice in their database. it makes things painfully redundant and difficult. but since we learned it in class, you'll lose a substantial amount of points if you don't have aggregation in your database). Don't bother making your project look pretty or have much functionality. As long as you demonstrate the concepts that were in class, you'll get full credit. The median on project 2 was 49/50, if that says anything to you. You have a total of 6 late days, 3 for the individual homeworks, in total, and 3 for the projects, in total. So clutch. Midterm and final are straightforward. If you know relational algebra, SQL, and the concepts, you'll do fine. And let me remind you, DON'T GO TO HIS LECTURES.
Where to begin... 1) This class was useless. Biliris is a mediocre lecturer and an incompetent teacher (or he just wasn't trying). His lectures were a complete waste of time. He would crap on and on about some simple concept in the most unintelligible way for an hour at a clip. I can honestly say that I did not learn anything substantial from this class. By the sixth week half of the students did not show up or left at the break. By the fourteenth week it was more like 80%. The material was presented with no context and no depth. I could have taught this class better than he did, and I do not have near the amount of database and teaching experience as he does. 2) I ended up doing all of the group work by myself because my partner was so lost. I cannot blame him considering the lectures were essentially black holes. If I had not had database experience prior to this course I would have probably been as lost as my partner, who had none. 3) A bit of the material was out of date. This happens in CS classes often, but it was particularly bad in this class. I think the textbook we were using was from 2003. 4) We were forced to use Oracle for our projects, which was a nightmare. Oracle is one of the most bloated and hard to learn database systems around. Why we would use Oracle and not MySQL (very popular, modern, and easy to use) is beyond me. 5) Biliris does not understand English well enough to teach a course. He can hold a conversation, but he cannot explain complex ideas. He did not understand questions asked by students and he often hid this by making fun of them. 6) The grading in this class was ridiculous. Often points were taken off if we did not answer a question exactly how the TAs thought we should have, despite those requirements not being specified in the assignment description. Each homework and test problem was graded by a different TA, which meant you had to contact many TAs if you had questions about more than one problem. This was incredibly inconvenient. 7) My assigned TA had worse English skill than Biliris, which made him useless to me.
Professor Gravano is a phenomenal instructor. He presents the material so clearly that at times you'll be bored to death because everything seems so simple! Don't be fooled, though -- this is only because he teaches so well (I made the mistake of being lulled into a state of overconfidence and skipped out on a few lectures, and I'm paying for it now just before the final!). Gravano clearly knows his stuff and can answer any question you might have - if you ever have a doubt, don't hesitate to ask him a question because after he's through explaining, you'll wonder how you were *ever* confused.
Professor Gravano is tied for my favorite computer science professor. He generally follows quality texts in his lectures and easily outperforms them in terms of the ease with which the material is presented. His homeworks and exams are reasonably challenging but also completely fair -- don't worry if you get a 60% on an exam because it will come out in the curve. Furthermore, he always knows what he's talking about (more than some professors) as a result of an expansive knowledge of all aspects of databases thus far. Now that I have gotten to know him better, it seems this stems from a more passionate interest in the subject than I've seen with others in their respective fields and it leads to a genuine desire to help students really master the material. I would definitely recommend taking the 6111 course if 4111 was at all interesting.
Prof. Gravano is great as a person, and puts much effort on teaching, but for reasons I can't even try to understand, he also puts great effort in making even the most basic concepts ungraspable and obscure - obscure in the sense that they appear like irrelevant details that won't help you one bit in getting through the course, let alone a job interview. The first half of the course dealt with DB design and SQL coding, and was relatively easy, thanks in great part to the self-explanatory, standard flow charts used for DB design and to the equally obvius SQL code. The second half deals with DB I/O cost analysis, and was difficult enough for Prof. Gravano to turn into - take your pick - Derridean post-modern literary theory or Martian rocket science. Even in the project assignments the most obvious concepts were mangled into research paper theory filler - my project team mate, who sailed through the course, kept wondering why on earth the guy would go to such lenghts to turn the clear and easy into the hermetic and impossible. Again, I never had any doubt that Prof. Gravano was putting more than enough effort on the class, considering that as a top scientist on the field he had a busy enough schedule, but the obscurity of his explanations made lectures a tough going, until by the second half he was making jokes about everyone falling asleep. The blank looks he was getting by then contrasted with the sincere interest everyone had on the course material before the midterm, when his challenges and questions started such debates, he had to stop and ask people to quiet down. This is one of the few courses in which the difficult textbook proves more useful than the overflowing PP slides or the teacher's talk. The TA I was assigned for the project appeared to get kicks out of taking points for the most trivial mistakes, but then again, it is difficult to blame the teacher for such things - in fact he was the one who had to ask her to take it easy with the grading.
Here's the bottom line on the prof and the class. The class is more than a standard db offering in terms of workload: you got to do two projects, a web based db app and another theory-type number cruncher (most db classes make you do that one big app as a term project). There's also homeworks, mostly easy, with an occasional twist. If you go to class, do the projects/homework and score above avg in the exams, you're guaranteed a B+. One caution sign I'd post is: don't ignore the prereqs. You *need* to know how to code, and you *need* to know some data structure stuff. Don't screw around on this one, or you'll run into trouble in the projects. Gravano is basically a good guy. He does his best to help you out (even tho he appears touchy in class when cellphones ring, laptops ping etc, and you got to get used to the self-deprecating humor bit.) He's cool in office hours and email too (he gave several important hints on the second project ... this was a *huge* help after I spent like a whole weekend going blind on the numbers.) Overall, low stress class and he's a decent guy.
My opinion: the course is not hard, the prof is good. Course covers all the basic db stuff. Most of the material is from the textbook. If you don't know programming you'll have a tough time so make sure you have the prereqs. The first project is a standard web/db app (what most db classes make you do). The second one is a number-cruncher type deal, it sounds kind of complex, but really is easy once you figure out the concepts. Gravano is approachable and easy. Great in office hours, explained the 2nd project very clearly, I had no trouble running right into the lab and finishing it up. He also responds promptly to email. All in all, a kind soul like the other review said, tries to help you out as much as possible.
Professor Ross has a cool Australian accent. That's pretty much what kept me going to the classes, though he does teach mostly out of the book. Either you go to the lectures and understand the material, or you read the book. You can take your pick. Also, the first half of the semester covers the more interesting stuff, while the second half can get way over your head. Make sure not to slack off mid-semester. You're probably better slacking off for the first month or so.
This was his first semester, and it showed. He just presented the lecture slides that came with the book, and read them outloud. Going to class was simply useless, if you had some other time to read it yourself. The first part of the class is easy and straighforward. There's a big project in 3-stages to build your own database application (duh). The second part of the course reminded me of the good old days at Unger's comp org. However, even though Biliris is as boring and mistake-prone as Unger, he is really a cool guy. He even uses the break to go out and smoke. The second project had nothing to do with database. It could have been given to anyone who had taken statistics and data structures. Everything is graded by the TA.
Really nice Prof. Really good in office hours if you need a concept explained further. Interesting first project, second project in C++ is boring, takes it right out of textbook. The material is reasonably mixed with real world examples and theory. Grading is fair, although midterm and final are overly weighted towards theory.
One of the kindest souls in the Comp Sci dept. There aren't that many profs that post on the web board as often as he does. His lectures may not be the greatest (in fact, you could do most of the learning by using the textbook and the lecture notes he posts online), but his homeworks and tests are pretty well designed. Has a tendancy to delay assigning homeworks until he has covered the material in class.
The information is useful, but the class is boring. Professor Ross tends to give way too much homework much of which isn't necessary for understanding the material.