I found this class incredibly elitist. Professor Cannon constantly made jokes/comments about how special/smarter-than-everyone-else Columbia students are. He also dropped his air of kindness and approachability to snap at students in lectures who asked something he didn't like. I'm guessing from the positive reviews that many students enjoy getting their egos stroked for attending a top school, but it just screams of insecurity. He even compared Columbia to San Jose State once just to flex how much "smarter" his students are... I have no idea why he felt the need to make fun of an institution with far fewer resources that makes higher education more successful. He's nice enough but seems caught up in prestige and unable to see the enormous privilege he himself holds. In addition, the class was average at best at introducing java. Cannon assigned large portions of a textbook to explain many topics that could be distilled much more efficiently through slides/lectures. This class was a review for me, but I could see how difficult it must have been for someone new to the material to try to sort through the readings to find the important information. Overall, this class is straight forward and some of the TA's are incredible. It's not the worst thing you could take, but there is so much room for improvement.
Professor Cannon is funny, approachable, caring, and knowledgeable about Java. His classes are very entertaining as he is an amazing lecturer, and one can tell that he really cares about his students a lot. I took this class during COVID, and he was very understanding and tried to make the class as least stressful as possible. This class is not an easy A tho. If you have programmed before, it might be a little easier, but for someone who has little background, the class can get time consuming and hard. However, no matter what you'll end up learning a lot about java and also some interesting stuff about Von Neumann Architecture and Logic Gates. The TAs are very helpful. There are a lot of them, so there are office hours basically 24/7. That said tho, because of COVID, office hours can be a little bit crowded because it is easier for people to go. If you have the patience and don't mind waiting for your turn, you'll get a lot of the TAs. Plus, they also offer review sessions almost weekly and those are very helpful for either the quizzes or the assignments. If you like coding, take this class with Cannon. You'll learn a lot.
Prof. Cannon is fantastic and really funny. His lectures are well organized, clear, and he's incredible patient at explaining concepts regardless of how menial the question might feel. He clearly cares about his students' learning experience and tried to make the online transition as interactive as it could be. I thought the course was difficult if you've never programmed before (and some people in the class clearly had) which gave an unfair advantage and little curve. There is A LOT of reading, especially from the computer science textbook that's quite dry. Written problems were assigned from there and I would read the chapter but not have a clue how to do them. The java textbook is great though and very helpful.
Honestly this class was not fun at all. I had taken 1006 in the semester before I took 1004 and I LOVED it... my logic was "omg 1006 was so much fun and I learned a lot with great projects and other assignments so I bet 1004 will be just as helpful and I'm going to learn a lot in java!!!" yeah no. At the beginning the problem sets and programming projects were very easy (which I expected and I'm sure people who were taking this as their first CS class appreciated). But like after the first couple of assignments, the projects just got really repetitive and some of them were dumb hard for an introductory level course. Also Codio is the worst IDE. Why they use it, I have no idea. The worst part is, that I feel like I barely know anything about java. The only thing I took away from this class is that java uses a lot of semi-colons and brackets? I guess I learned a little bit about the internet and Von Neumann architecture? The midterm was straightforward I guess, as was the final (but I took this class during the corona semester so idk what the real final would have looked like). TLDR; if you're not a CS major and just want a fun intro class, take 1006 or 1002. This class is a lot of work with no reward. I spent an entire semester in the class and I still barely know any java. I used guess and check for the projects (like I would write the code that I think would work, check if it complied, look for the errors which were usually pretty minor syntax errors)
Cannon is great! He clearly cares about his students. Would recommend this course even if you aren't a CS major (if you are willing to put the work in).
"A cow says 'moooo.' Right? Are you guys getting this? C'mon. If you're not, you're going to have a hard time on the exam next week."
ghedfklsdafjskdafnskadfnsdamf ghdfna ds
Professor Cannon is seriously amazing! He explains hard concepts in a way that is easy to understand. He is also available during office hours and super helpful. I wish I can take more classes with him.
Word of warning: only take this class if you are willing to put in the work. You will probably spend at least 8 hours a week on each homework. However, it's the class I've felt like I've learned the most at my time at Columbia. It is incredibly rewarding if you like knowledge and new concepts. Do not take for a requirement if you don't care about learning something new. Read through the textbook and go to lectures and you will be okay. Cannon is funny and sweet and you can tell he cares a lot about the course. Entertaining lecturer.
Cannon is a very engaging lecturer who explains the material pretty well. His jokes elicit a non-zero amount of laughs consistently, he jokingly thinks the class hates him, and he gives you riddles that have only a tangential relation to the class. More importantly, this class provides you with a bunch of background knowledge for CS, moreso than any Java programming proficiency, something that will come in Data Structures. It's a wide breadth with a little depth, but he and the TAs do an admirable job explaining concepts and answering questions, preparing you for the (reasonable) midterm and final.
I came into this class having taken a basic programming course in high school. It wasn't completely a breeze, but very doable and I came through with an A. With such a basic CS course, there is a lot of information out there if you get lost, and you should utilize it. The book is very useful, office hours are a big help, there are many resources online, and other students can be helpful with the homeworks if you don't know where to start. Blaer is a great professor - entertaining, funny, and makes things very clear even when they're difficult concepts to grasp. Having taken 1004 and 3134 with him, I'm sad to not have him as a professor next semester. Make sure that you read the book and get help early if you think you might need it - the concepts you'll learn build on each other so it's important to not get lost or it will take a while to get back on track (same with all CS courses, IMO). If you're new to CS, expect a struggle in the beginning since the most basic concepts are covered pretty quickly, but it will get easier for sure. Get started on the homework as early as you can and things will go well!
If you have no experience with Java, it's OK. The world is not going to end, but it won't be easy neither. I'm not a fan of reading but Big Java, Late Objects is one of the best books out there to learn Java. I gave my full attention to Blaer, but sometimes I would wonder off. But, it always came to taking some time to read the book and get the hang of it. Some of the answers of the Problem Sets are in the book itself. It's really important and useful that you read the book. Going to recitation doesn't make that much of a difference, unless you want to ask a question. And then again, they may even not answer them, but tell you to wait until Office Hours, since you're not the only one there. I had no experience with Java, got an A on the course. I am tech-savy, but it doesn't mean it's not achievable. Once you get the hang of it its pretty awesome! I do recommend taking the course with Paul. He is very funny and very lenient (we got our homework deadline extended like 3 times during the course). The problems sets are not that hard. Just make sure you take notes during class so that you can do your homework with them. Not an "easy A", but its not impossible to get an A.
tl;dr: This isn't a easy class if you have no compsci experience. However, if you insist on learning Java, Blaer's the best class to take. Problem sets are a bit of a struggle, exams are reasonable. Blaer's a fun guy. He's down-to-earth and isn't pretentious. Expect a lot of tangential stories though. There are a lot of TAs, and they're for the most part helpful. Recitation is usually staged more of an OH though, they take questions & don't really have a set plan. You must go to the first recitation--that's when they go through how to set up pico so you can actually code, and it's a million times easier seeing them do it in front of you than trying to read the tutorial. If you're like me and go into the class w/o knowing any compsci, you're going to spend the first few classes going "what the FUCK is going on." Be good about reviewing notes and reading the textbook though (and doing a lot of googling), and eventually you'll catch up. Before each exam he'll usually go over what will be tested. Make sure to go to at least one of the TA's review sessions--they'll usually cover something a little more comprehensively than Blaer. Exams are decent. Often I just read & reread the textbook and that was enough. The final covered way more content, but to make up for it it was also easier. Also, use Piazza religiously. Questions are almost immediately answered and any question you might have will probably already be up there. An A is definitely doable, no matter your past experience; you're going to have to put in some work & effort though.
If you have previous experience in coding, you most likely will not have trouble with this class. If this is your very first exposure to computer science, be forewarned that this is a challenging class. It will be much more rigorous than most likely any other introductory course in other fields. That being said, if you put in the effort, this class is very doable. You will be spending hours studying, as it requires learning both a language (java) and a general science (CS theory). If you do you not intend to be a computer science major, I would suggest taking a different course that involves coding (like a applications course that teaches Python with another subject, or a coding course for nonmajors). If you do take this course, be prepared to do a lot of googling & research on your own to figure out how Java works. It would really help you to do some basic tutorials to get the gist of it before you head into the first lecture. Blaer is an excellent professor, and his explanatory style is very clear and concise. He gets very distracted in his lectures, and it's pretty hilarious and adorable--which always made them a pleasure to attend. His expectations for tests and homeworks are always very clear. He does, however, have a tendency to underemphasize how difficult/important topics will be. For example, when listing topics to go over on test, if he mentions something in passing, you should know it pretty much backwards and forwards. Another example, the second to last homework we used a hashmaps, FileReaders, and PrinterWriters--all of which he probably talked about for like two seconds and never explained. Additionally, the TAs are beautiful, wonderful human beings. James Lin the head TA/(and I quote) "aspiring Little League Coach" is the best thing to happen to 1004 probably ever, and he was very encouraging and generally super kind in all his emails and communications. They are all very helpful, just be sure to find one who you get along with and remember their office hours (there are like a 11 TAs, and like always office hours). Piazza is also a great resource, with under 15 min response times. Usually all of my questions were already answered there before I even needed to ask anyone.
Definitely take this class. Blaer is incredible and hilarious. You don't really need to go to the lectures to understand this, especially because the book does a great job of explaining it but its good to go just to hear Blaer talk. The class is not too difficult and is a great introduction to Java, very interesting and I learned a lot. If you are on the fence about it you should for sure take the class. The homework assignments can be challenging sometimes but he gives you a ton of time to do them and there are so many TA's for this class that it makes everything very doable.
Be warned: Cannon does not hold your hand. He assumes that everyone in the class is wicked smaht and tailors his lectures, assignments, and exams accordingly. But I strongly disagree with the reviewer below. I walked into Cannon's class with no programming background, but I found his class enjoyable and occasionally challenging. The only prerequisite you need to succeed in Cannon's class is good time management. Start on your assignments early, and ask questions on Piazza or during office hours when you get stuck. Read the assigned chapters BEFORE you go to lectures: Cannon does an excellent job clarifying tricky material in class. Aim for comprehension - make a serious effort to understand difficult concepts as well as your mistakes on the assignments - and you will do very well in this class. -- I do agree about what the other reviewer said about the TAs. The VAST majority of them, especially Zoe and Anusha, are just the sweetest people you'll meet on this planet, but yes, a few of them are unbelievably rude and disgustingly condescending.
I imagine this class would be very difficult to succeed in with no programming background. I took AP Computer Science in high school, so I expected Cannon's class to be cake. However, it still did require a good deal of effort and I felt appropriately challenged throughout the semester. As past reviewers have mentioned, the learning curve is pretty steep, with problem set 1, and programming projects 2-4 being among the most stressful. Cannon is not kidding when he says that the programming projects will require 10+ hours of work -- they really do! Your best bet would be to start early on the projects and attend TA office hours whenever you hit a major rut. Lectures are helpful, but only as a brief summary of what you need to know. To rely on lectures alone would leave you poorly prepared for the assignments in this class, but I think that for any technical class this goes without saying. The two recommended textbooks are both very good resources and will be relied on heavily throughout the course. I found that the lectures and problem sets were representative of exam content. The programming projects, however, were not. The class is well organized, with a very clear outline of covered topics and assigned grading groups to expedite grading. There is an entire army of TAs who rotate on a schedule to grade your problem sets/programming projects and who send you detailed grade reports VIA lionmail (more on the TAs later...). Overall, I think the course does a good job at its ambitious task of introducing students to the fundamentals of computer science and programming in Java. In addition, you will also be introduced to software like: Pico, CUnix, CyberDuck, Eclipse, Vagrant VirtualBox (maybe), and Gimp. Professor Cannon has a good sense of humor and tries to make even the duller aspects of computer science interesting. If you commit yourself to doing all the work, the takeaway is enormous. My only major complaint: THE TAs (well, some of them): The TAs are a mixed lot. Some are truly wonderful and are willing to help you with all your NullPointerExceptions, while others seem plain butthurt about losing points for inane reasons back when they were COMS W1004 students. Between the 6 problem sets and 5 programming projects, you'll come into contact with at least 11 of the TAs. As I mentioned earlier, your grade reports are sent to your lionmail by your TA of the week. Frequently, students will respond to the grade report emails to ask for suggestions or for a more detailed explanation of how to improve code. As I have heard from other students, and as I have experienced myself, this sometimes results in the TAs correcting your grade to a lower score. What I mean is this: when the TA sees your grade report again in your reply email, they might see that they made a mistake in grading you and then will lower your score by the appropriate amount. Until the TAs start grading things without error, or until some sort of "grade-is-set-after-sending-to-student" policy is put into place, you should not ask the TA who graded you for pointers. I repeat DO NOT ASK THE TA WHO GRADED YOUR ASSIGNMENT ABOUT THE ASSIGNMENT--THEY MIGHT SPOT SOMETHING THEY DIDN'T TAKE OFF POINTS FOR AND THEN PROCEED TO TAKE OFF POINTS FOR IT. To me this seems rather messed up. Isn't the best person to learn from the professional who was paid to read through every line of your code? As things currently are, it is impractical to talk to this person because they could easily spot a mistake in their grading and then make a last-minute change on CourseWorks. In no other class I've ever taken in my academic career have assignment grades been so impermanent. I overheard other students in the help room speak of "avoiding" the TA that graded their most recent assignment in fear that they could have points deducted. I hate to think I could have done better in this class by NOT asking the person who graded my assignment for help...
You'll spend half of the class learning Java, which is pretty easy if you put time into it. The other half is more theoretical, though it shouldn't be a big problem if you're competent in math. The workload is manageable. Again, the amount of time you'll spend outside of class studying and working on the problem sets really depends on 1) your aptitude in math, which many CC/GS kids - I'm sorry to say - lack, but more importantly, 2) how much you enjoy CS and learning about algorithmic thinking and problem solving. If you fit into both categories, you'll breeze through this class; if you're merely good at math but spend no time studying, you can expect to get a B-/B, and if you're not so good at math but really enjoy the subject or spend a shit ton of time studying, you can probably walk out with at least an A-.
If you are taking computer science first time and have had very little or no experience with programming, you will have a tough time in the class. Cannon's lectures on the programming component aren't helpful at all; the best way to deal with programming assignments is to start early, read the Big Java book, and attend office hours. His lectures on the conceptual component of Computer Science are useful, though reading the book would give you the same information, but it can be more time consuming since it has a lot of unnecessary information. His first midterm includes a lot of memorization and not a lot of programming examples. The programming component isn't related to the assignments at all but to the simple principles of object-oriented programming. The other component was mostly memorization. (There were questions asking the size of the 'short' data type, for instance.) The final has less questions based on memorization and can help you bump your grade since it's as long as the midterm. He makes a lot of trashy jokes that most people seem to like. He also wastes a lot of time on unnecessary questions such as "I would like to major in Computer Science; when should I take Discrete Math?" in class. His lectures are very unfocused, and you can do fine even if you skipped some lectures. How you do in the class depends more on you and very little on lectures. I still do not understand why he is in charge of all the introductory computer science classes when he cannot clarify basic but important concepts.
If you've never had any programming/Computer Science, your first class will be a bit rough, but Cannon warns his students of this. For me, the first month or two were not too challenging, but mid-semester I hit a wall. Try to to the TAs before you feel confused, and if you feel the slightest bit confused, definitely go the TA or get a tutor. Makes life much easier in the long-run. Cannon is a great lecturer (especially for python!) and throws in a good number of jokes (that are actually funny!!) He is approachable and tries to make his introductory classes challenging for all but also accessible to people who aren't taking his class for the major. He also stresses the importance of improvement, and is willing to work with you if you scored really badly on the midterm as long as you improve on the final. The TAs for both intro. classes are great! For Java, study your vocab. A LOT.
I was apprehensive about taking this course since I had no experience with programming or computer science. As I look back on this semester, I have come to the conclusion that yes, it is possible to take this course without prior knowledge of programming. However, it will require a lot of work on your part. If you're up for a challenge, this is the course for you. In terms of personality, Cannon is quite friendly and cracks pretty good jokes in lecture. In his office hours, I found Cannon to be quite helpful and not at all sarcastic, in contrast to what other reviewers have said (but that might be because I came on a day in which very few students were asking him for help). Cannon is a decent lecturer, although he goes through concepts and examples very quickly. If you don't ask questions or follow up his lectures with your reading, you will get left behind. Be sure that you keep up at all times! (also, the textbooks for this class are quite helpful). For problem sets and programming projects, do not procrastinate! They take much more time than you think they do (he's not kidding when he says that the class will require at least nine hours of work per week). If you get stuck, go to office hours, ask a CS friend, or use Piazza (the online messaging board) to get your questions answered. Overall, I'm glad that I took this course. It was challenging and I might not get the grade I want, but I'm glad that I learned something new.
If you're only going to take one Comp Sci course take Java with Professor Cannon. He is fully aware that most people have never coded before and provides very structured ways to allow people to easily understand coding. He doesn't start off too quickly and provides tons of sample code which is usually very similar to the homework he gives. He is very open to peoples comments and asks for questions. Probably one of the best classes I've taken at college so far.
Adam Cannon is a pretty solid teacher. He knows his stuff, and is very organized when teaching. With this in mind, Intro to Java is probably one of the most challenging and time-consuming classes offered at Columbia. Unless you have to take this class for your major, be sure you REALLY want to take this class. There are much easier ways to learn coding and Java. When Cannon tells you at the beginning that this class will take at least 10 hours of work per week, he is telling the truth. Many times, the work requires a lot more than 10 hours/week. There is a lot of information that Cannon tries to teach in this course. You will learn both theory and programming in this class. Because of the amount of info he tries to teach, Cannon skips over a lot of basic stuff that he expects you to learn on your own. I had no experience in programming coming in so I wish he would not have skipped over stuff. For this reason, I would only recommend this class to someone who has some experience or background in coding. Talking to many who were in the same boat as me, we had to play catch-up throughout the semester. This class is already considered difficult to those with coding backgrounds, so it makes life even more miserable when you have to put even more work into an already difficult class. The TAs for the class are usually pretty helpful. I would recommend getting help from the TA that grades your assignments since some of the grading, especially the written assignments, can be very subjective. I also went to Cannon's office hours. He does not come off as the nicest or most personable person ever, but he does try to help you out. He definitely does not try or care to get to know students (at least in this class). I will give him props for his cheesy jokes that lighten up the class. In the end, you really have to decide if you are willing to do the work for the class. If you just want to take this class because you think coding will be "fun" to learn, do not take the class. Learn coding on your own at a pace where it can be fun, exciting, and addictive. Besides those who are majoring in CS, only those who are serious about learning Java and the theory of programming in a rigorous and often cutthroat setting should take this class.
Funny in class. Kind of mean in office hours. A fair grader. TAs in this class really care and are helpful. However, going to a TA other than the one who is going to grade your problem set is usually a waste of time because the open-ended short answer problems are subjectively and sometimes harshly graded. For programming assignments, all the TAs are amazing and Cannon gives good advice during class. Also there is a generous curve at the end, which is to be expected in a class of 200+ people
Literally the best TA in the world. I've been fortunate enough to have him as a TA for three of my computer science courses, and every time I've needed help, he's been extremely responsive and helpful. He'll help you debug your code and patiently explain theory over and over if you need it. Don is very patient during office hours. He was also the only TA in my COMS 1004 course who wasn't trying to make us all get Cs. His TA office hours are always packed because it's pretty known what a great TA he is. I pretty much love him.
Well, he already has his silver nugget, but let it be said: Cannon deserves it. His lectures are fun to go to, and he tries really hard. I usually feel bad when people don't laugh at his dumb jokes so I laugh pretty hard to give him some credit. I usually enjoyed going to lecture. I never brought my computer, though, because all his example code is posted on courseworks anyway. You can do your note-taking just as well in a traditional notebook, and if you know that you are easily distracted, I'd recommend not bringing a computer. The two lectures that I did bring one I may as well not even have showed up because I have no idea what happened. The course itself is hard, for sure. This class is an introduction CS and programming class, so if you never took AP Computer Science in high school, you're going into a topic that you've literally never seen before, unlike most of your other classes. It's pretty satisfying, though, when a few weeks in you're already writing simple programs that can do tasks that you couldn't do a few weeks before. The programming assignments are tough, especially compared to the homework which literally take maybe 1-2 hours tops. Programming takes probably 10ish hours. The singular most important advice is go to the TA office hours. There are like 8 TAs for the class. Obviously the TA hours the day before your assignment is due are going to be packed, so try to go earlier if you can. The ones in the middle of the week are literally empty so you could have one-on-one time to do your work with a TA sitting right there who sole purpose is to answer any questions you have and help with your programming. Cannon also sets up an account for the class on this website, Piazza.com, that is basically a messaging board where people can ask questions and the TAs, other students and Cannon (occasionally) can answer questions. This is a really good resource because your question has almost always been asked by someone else, and you can ask questions anonymously.
I actually took this class last year, spring semester but haven't got a chance to review it yet. Let me just say that there aren't many classes I'd actually feel obligated to review, but this is definitely one of them. This is so far the best class I've taken at Columbia. This class gives you a great overview of Computer Science, and an unmatched introduction to programming. Somehow Cannon manages to fit in a ton of material while still giving a good sense of each topic. The only exception to this would be the section of the class on computer networks, which I honestly feel could have been narrowed down to just the information about internet protocols. Learning object-oriented programming has a learning curve, but once you've got it, you're just coasting from then on. That's not to say projects don't take a while -- you'll spend hours trying to find bugs in your program. But in general, I think there's only a few concepts in this class that are difficult to learn, the main one being OOP. Nonetheless, Cannon and the TAs make themselves pretty available to you, and the assignments are not unreasonable. That being said, pay attention to what Cannon says: if he wants you to understand a concept by a certain homework (e.g. what objects are) you should do it, and you'll be fine. I think the main idea I want to convey with this review is that the work you do, while heavy, is very meaningful, and you'll learn a lot about algorithmic problem solving and programming in Java.
This course was difficult for sure. There was a lot of learning on oneâ€™s own simply because there was so much material, but there were resources there for use that could make oneâ€™s life a whole lot easier, such as TAs. This is where I have to disagree with the previous reviewer. Madhavan was a standout TA. He stayed after his office hours by as much as three hours one time because people needed help. When he was in the TA room attending office hours for his own CompSci classes, he would help 1004 kids who needed help. No matter how many people came he would individually go through his studentsâ€™ code to find problems big and small. He also didnâ€™t treat students who didnâ€™t know things like idiots which is more than can be said for some others of the TAs. I would know, I went to pretty much every TAâ€™s office hours. Madhavan was not an easy grader, but thatâ€™s because he knows his stuff and demands a high standard; if you donâ€™t want to be held to a high standard, donâ€™t go to Columbia. The TA Matt was also awesome though he wasnâ€™t my primary TA so I donâ€™t know his grading styleâ€¦ Cannon was helpful but impersonal, class of 300â€¦ You will feel accomplished after taking this class, but donâ€™t expect to sail. But classes like this are why you come to Columbia, you work hard as hell, and then you get a ton out of it.
When you enroll into this "Intro" to Java class, you are signing yourself up for a scheduled butt-kicking every time a programming assignment is due. Do yourself a favor and start the programming assignments early, and write down all your questions so that you can meet with the TA's during office hours to sort it out. Cannon is a fantastic teacher and he is very talented at keeping the entire class attentive during lecture. Take notes during class, because he only covers the important material, which makes sense, because that is exactly what appears on the midterm/final.
Cannon is great. He's an interesting lecturer (hilarious, and also super passionate), very receptive if you ever want to meet, has tons of office hours, and is always very fair. Also, he has tons of (useful) TA's, so basically there is always someone available whenever you need help on homework, including weekends. I had some experience with programming before taking this class, but I had to put a sizable amount of work into this class--the programming assignments take time. (But really, start early. The TA's can basically help you through any problems you're having if you go to office hours.) That being said, this class made me want to be a computer science major. It's incredibly fun and satisfying, and was definitely my favorite class this semester.
I am not a computer science major or a computer science person at all; I'm not a math or science or logic person in any sense of any of those terms. My mind just doesn't work that way, and I struggled with this class more than I've struggled with any other class. That being said, it was probably my favorite class thus far. Cannon is just a wonderful man who makes the lectures interesting, fun, and clear. He is incredibly welcoming ad supportive, so absolutely take advantage of his office hours. Talk to him about any concerns that you have - whether it's a specific coding problem or worries about the class in general - and he will help you. If you're not a computer science person, there is a lower level class that provides a lot of the background for this class, which I didn't know about, and could have done much better had I taken it. This is not an easy class, but it's very fulfilling. It's something I never could have seen myself doing, but I would absolutely recommend taking it.
Cannon is a phenomenal teacher. If you're not interested in computer science, go to class just because it's fun. Since it is an INTRO course to computer science and java, he does a really great job at explaining concepts, etc. and will happily answer any question. You will learn so much more from being in class than by reading the textbook. That being said, read the textbook and make notes! The midterm and final both include a vocabulary section - where you have to write a definition for the given words (note, Cannon gave us a list of 100 possible terms for the final and tested us on 10). The midterm is really easy if you're prepared. Do the work, meet with TA's, etc. etc. etc. The programming assignments will take a lot of time, so definitely do NOT start the night before they are due. Let me say again - Cannon is a phenomenal teacher. He is an amazing lecturer and makes class fun. He always has a good story, funny / snide remark, or riddle / brainteaser to share.
Cannon is a great lecturer. He's very clear and has the wonderful ability to see things from a student's perspective. I believe he's been teaching this class for several years, every semester and so the class is well-planned and thought out. I would recommend going to all the lectures, you'll really learn a lot and also you probably won't have to spend much time reading Big Java for the assignments if you attend class. Plus Cannon always goes on random CS-related tangents every once in a while and these are generally fun and informative. As for the class, it's got two components; theory (Intro to CS) and programming (Intro to Java). Theory and programming homeworks alternate from week to week. Theory homeworks are not too bad, they can be done just from reading the relevant chapters in the book. Programming ones can be challenging and take varying amounts of time (depending on who you are) but you will certainly learn how to program at the end of it. Midterm and final aren't all that bad if you've been keeping up with the lectures and the homeworks. They're a bit on the memorization side of things - especially the final which asked some pretty obscure questions which is why it's good to attend lecture because he often mentions random things that I noticed ended up on the test. I should mention that although this is intro CS, it's a pretty high level intro so don't take the class for the granted - you'll have to put in some work to get an A. Also there are lots of office hours and for the most part the TAs are great so I would highly recommend popping in if you have question regarding your assignment; even if you code works, you might wanna just make sure with the TAs that your design, etc. is okay.
This is the class that made me want to major in Computer Science. At first I only took it because it was a requirement, but Adam Cannon is a skilled lecturer. He knows how to make confusing material digestible, and his classes are enjoyable. I would recommend going to office hours - the TAs are generally pretty helpful, and it's useful to get feedback on your code before you submit it. The programming assignments were a lot of fun, once you get into them. The book assignments (the theoretical ones) can be a pain, but they're necessary to grasp the material fully. It's not necessarily the easiest class that you'll take at Columbia (unless you're already a programmer and therefore shouldn't be taking this class anyway). But it's also not the hardest - and it may even be the best and most important one you take. Make sure you take this class.
Cannon is awesome. With a couple of masters degrees and a phd, you know he's incredibly smart, but he also keeps the class moving well with his wit. Class attendance is typically helpful, but you can get by for most topics by simply doing the assigned reading. If you do attend class, supplementation with assigned reading is still ideal. The texts for the class are pricey so get them from a friend or rent them if possible. Only one of the two, Big Java, will really be useful after the course is over, so if there's one to buy, that's it. The books are thick, but the course does not cover nearly all the chapters in them.
A good teacher. I had zero comp sci background and am doing fine in the class, he's awesome at office hours and explains things really well. A lot of people who complain about the workload also start the assignments really late, which is a bad idea. A great class and a funny teacher, i enjoyed it.
This class the truly Terrible and unbelievably hard! It says that it is an into level class, but its not. This was the most time consuming, annoying and frustrating class I have ever taken. If you have taken AP comp sci, or have a better idea of java you will be struggling, but if you have none DO NOT TAKE! It was impossible with out outside help. Cannon is a funny man, and class was not boring, but the subject is just impossible. The theory stuff is easy and understandable but the java is very very hard and is not taught at all, its more teach yourself everything or find someone who knows what they are doing and have them teach you. I learned ALOT, but in the end, not worth it.
Ms. Leslie is a very sweet teacher. She's very young, and she's very approachable. She will give you all the time in the world if you need help understanding something. She presents all her lessons well, using powerpoint presentations. Good speaker. I took the class with no programming experience as a freshman, and got an A. I did, however, go to her office hours every week, so she got to know me and I did get extra review. But I wouldn't do the assigned readings, and usually didn't pay good attention in class. Programming is fun, but sometimes frustrating when you don't see your mistake. She will extend deadlines if everyone is behind.
The first day of class Professor Cannon told us we should expect to be spending at least 10 hours a week doing work for the course. I thought he was joking. HE WAS NOT. This is a great class and he's pretty good at explaining concepts (if you pay attention), and he's understanding about extensions and going over certain topics more in-depth if the class needs it. But the weekly assignments were pretty difficult and/or very time-consuming. You MUST start each assignment at least 4-5 days before the due date, because you will run into problems with your programs and you need time to meet with the TA's. I found that many students taking the class had prior programming experience and they found it easier (and messed up the curve). But for the rest of us it was a grueling learning experience. I'm glad to have taken it but you need to invest time, no joke.
I was very happy to see Professor Cannon has a star, which I think he deserves. COMS W1004 could be one of the best courses at Columbia. I would recommend this course to any strong student up for a challenge, even one who does not need COMS as a requirement. Professor Cannon says it is not easy and tells us which assignments are especially hard, but CS will teach you a new way of thinking about the world. Professor Cannon covers the basics of both hardware (the physical structure of the computer) and programming, so by the time you're done with the course you will probably know which topic you like better. Lectures supplemented the readings and helped clarify which aspects of the materials were the most important. One of Professor Cannon's strengths was making complicated concepts understandable. He is willing to go over the same idea more than once, even at the expense of glossing over a few simpler programming concepts that I would have liked the lectures and assignments to cover a bit more thoroughly. The final was DEFINITELY harder than the midterm, although neither was excessively difficult. It's a good idea for people without a very strong programming/hardware background to take W1004--you learn quite a bit about both and are a much more fluid programmer by the time you reach the more advanced courses. Professor Cannon was very good at introducing us to the academic organizations and resources the CS department offers. The fact that there are many TAs means that you should be able to come to a good TA's office hours (in my experience, decent to good TAing was the rule rather than the exception). Professor Cannon is also accessible and reasonably flexible.
Paul Blaer is a master in his field. He knows exactly what he is doing, and can answer damn near any question you can come up with. The homework assignments are not extremely difficult, but do take time and actual mastery of the subject. He makes himself very available if you need help, and has knowledge of Computer Science that extends far beyond Java. The workload is not serious, and you do not really need to attend lecture if you're keeping up with the book. However, it doesn't hurt your grade at all to attend lecture, as he often gives clarification on confusing topics and a myriad of extra information which could help you out on the midterm and final.
chris' lecture is not interesting but not bad either. all Comp sci TAs suck except for a chinese guy named matt. hard to get good grades. They assume you know about computer science before you start the class, although it's an intro class.
I can only echo the other reviewer. Chris was the difference between dispair and hope, sobbing and solace, cursing the darkness and compiling code. He was ever patient and a true gentleman. Half the students would come to his office in a panic, at the last minute, having not attended classes, with code that bore little relevance to the class assignment, he would work with them and make them understand and pull through.
This class was a huge time sink. I was up all night for three of the programming assignments, and I did not miss class (although most did). Professor Aho does have difficulty explaining things in a way that varies from his lesson plan. He did cover the material, that is about the best you can say.
I don't think the previous two reviews are fair, Shlomo is one of the few teachers that I've had who really cares about improving his class and helping students. Although some lectures can be a little bland, I found the homeworks to be pretty interesting and helpful getting to know how to use CS skills in more useful applications than 1004.
Prof. Cannon is awesome. He tries to make the course interesting and makes a ton of jokes. He wants everyone to do well and really makes it easy for you. The TA sessions are really helpful. If you put in the work you can def. get an A and you might even find yourself more interested in comp. sci. after a course with him
I had this class with Aho, who is I'm sure a really brilliant guy, but is also the head of the dept and used to teaching grad students, so he had no idea how to come down to my level and teach an INTRO course. The TA was AMAZING. saved my life. he's really helpful, teaches better than the teacher, and really puts his all into helping you understand and get your programs to work. Also holds good final reviews.
This is supposed to be an intro class, but Aho made it too hard for people with out experience. He is a brilliant man, but unless you already know a lot about comp sci, you are about to get totally screwed over. TA's didn't even know how to solve all of the hw problems. This class was torture to me.
Janak is by far the best professor I've had at Columbia. Not only did he take the time to learn practically everyone's name, he also was an excellent lecturer. His class is very understandable and helpful in both the basics of computers and in begining to think about how computers operate. As an added bonus, he brought in doughnuts on the day of the final to makeup for the 9:00am exam time.
Janak is one of the most student-friendly professors at Columbia, and a very good teacher. The class is essentially half introductory theory, and half intro to java programming. Janak designs it to be the kind of class that ANYONE can succeed in easily as long as they try. Just go to class, take decent notes, and you will have everything you need to do the homeworks and tests without breaking a sweat.
Like everyone else has said, Janak is really great. He doesn't try to screw you over on the midterms and finals - all the work is very much doable with little difficulty (if not, it's not hard to get help). He also gave out extra credit assignments in class. He genuinely wants people to do well. If you're going to take this class, Janak is definitely a good choice.
This class was absolutely rediculous. I'm lucky I passed. The homwork was so hard that sometimes the TA's couldnt help. He expects a lot from you and because he is so smart, his whole level of thinking is way beyond us humans. He's a genius robot that shouldn't be in the class room. I respect his mind, but hes a bad professor.
He is very nice and interesting, but I feel that everything he says in class is posted online which makes coming sort of pointless. His midterm was very easy and the final was very hard. The homeworks ranged from easy to hard. There was not much of a curve in the final grade.
Janak is a great guy! He attended Columbia so he can relate to our classes. He really cares about the students and tries to be as exciting and fair as possible. You will learn a lot in his class and also receive a good grade if you put forth an effort!
Maryam was the Java programming TA for Prof Aho's Intro to Comp Scie class. Awesome lady! I was in her Java labs, and she is the only reason I can say I learnt something in this class. She was very helpful whenever I got stuck with my programs and was available to help by email or in person even during the weekend. Sign up for whatever class she is teaching, and if she is a TA in one of your classes, make sure you make your way into her lab!
DO NOT TAKE THIS CLASS!!! This was the first semester of Prof Aho's experiment in teaching programming and computer science concepts at the same time. Classes were very confusing and tried to teach you material that encompasses complex computer science matter, the book sucks, and whatever you learn in class doesn't help in any way with the programming assignment. Thank god the TAs were awesome, that's how I can say I walked out of this class feeling that I can actually write a program. Their assignment were very interesting and they (the TAs) were available to help virtually 24/7. I am very disappointed with the theoretical part of the class however, and the theory problem sets (aside from the programming assignments!) were not only ridiculous but impossible and unmanageable.
Out of the 25+ professors I have had, Professor Cannon is probably one of the WORST professors I have ever had. He's a very nice person but he is awful at instructing and clearly explaining the course material. He does not provide a syllabus, which I feel is helpful when reviewing for the course. This course is an INTRODUCTION course which means NOT EVERYONE enrolled in the course has has prior experience with Computer Science. He quickly covers each topic providing a few very easy examples and then excepts you to be a professional programmer on the projects and exams. Stay away from this class unless you have to take it for a requirement . . . I did the mistake of taking this class because I thought it would be "interesting." I haven't learned anything!
Basically, I would say Sklar is a bit above a mediocre teacher....I wasn't bored in class often, (she actually showed bits of relevent comp sci videos every once in a while) but I wasn't enthralled either (remember, it is computer science)...... The class has increasingly difficult homeworks, but I found the tests nomt too bad at all.... very doable...... I would say I got a solid backing in the JAVA language after the class.... Its not a class designed to break you, (I think data structures is for that), so you dojn't end up with an incredible programming ability, but I would say more than enough...... If your interested in COMP SCI, this was a a solid class, definatley worth taking just to get your feet wet...
Thank god they opened up an introductory computer science course for the non computer science major. If you're not planning on majoring in comp sci, I advise taking this introductory course as opposed to CS1007. At the beginning of the course I thought Prof. Leslie was the worst teacher on the face of the earth, but then I realized that Comp Sci is just the worst subject on the face of the earth and that she is actually a pretty good teacher. She clearly presents ideas that are very complicated to understand. Her lessons are very structured and she makes the material as simple to understand as it can possibly be. Don't be alarmed if your a bit confused for the first 2 or 3 weeks, because if you've had no comp sci background (much like I had none when taking this course) it takes a little while to get used to the concepts. Prof. Leslie is an excellent teacher, although she is a bit nervous up there (i.e.: she laughs a lot when she talks and she writes EVERYTHING she says on the board!!!!! (in other words, if she says, "It's sunny today" you better believe it'll be up on the blackboard")). She is also very approachable and extremely understanding. So besides needing to relax a little, she is a great teacher, and she made comp sci bareable for someone (aka: me) who HATES comp sci with a passion.