professor
Adam Cannon

This professor has earned a CULPA silver nugget

May 2021

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.

Mar 2021

I know many find this class extremely useful and engaging, but this was not the case for me. To be honest, I don't think I truly learned anything. Now I am struggling a lot in Data Structures because I don't have the basics of programming. Prof. Cannon often gets distracted, which distracted me. Moreover, we had to learn things such as circuits or read entire chapters about what computer science means, which were really boring. I just wanted a class that taught me how to program, and this class didn't (again, in my personal experience) Also, they took off points from your homework if you didn't indent everything the way he wanted. I think this is pretty pointless because in Data Structures they don't care about that.

Jan 2021

Professor Cannon is super nice and makes the lectures engaging. His online lecture was my only class that was able to sort of replicate an in-person experience. My only complaint with the course was the grade weighting. Be warned, the class was not curved this semester since we had no mid-term or final. After the pdf deadline, we received a notification from courseworks that the grade weights had changed. This caused averages to drop by around three points and for me, a full letter grade (I'm not sure if this was a mistake on Cannon's part or courseworks but it was frustrating regardless). The quizzes were supposed to be low stress, but a single question counted for a whole grade percentage point. A single question on the quiz could have a major impact on your grade. Overall, Professor Cannon does a solid job given COVID, but I think the grading system could use some tweaks. I'm pretty sure he will make those changes though as this semester was a trial run of sorts.

Dec 2020

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.

Dec 2020

This dude is literally the best. Take his class!!!!!

Oct 2020

For a non CS major I absolutely do not recommend taking this class. I am a History major and was looking to fulfill my science requirement with an interesting course, unfortunately this was not It. The course itself is heavily relied on the textbook, which in my opinion is really dense and dry. Most of what he goes over in class is a clear demonstration of how well he knows the subject, but is hard to understand (especially with no CS/programming experience). The course literally goes from crawl to run within a matter of weeks and if you haven't gotten a good grasp at that point then good luck! I struggled after the first few weeks, and unfortunately was stuck in the course due to the credit requirement that I needed to have to be full time. In a nutshell, he is an excellent professor with an incredible knowledge base of programming, but for someone who has never taken CS it will be tough to understand The key takeaway that I got from this course was at least understanding how to read code and correct errors within a program. If your ready for a challenge then take this course, but just understand by no means is this course easy, and you will have to dedicate a decent amount of time each week in order to understand the material. They also shifted to using Gradescope to submit homework assignments, which can be a bit annoying and confusing to learn how to navigate.

Jul 2020

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.

May 2020

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)

May 2020

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).

May 2020

Full disclosure: I had no exposure to Java prior to taking the course, but I did have decent experience with Python and didn’t have much trouble keeping up with Cannon. The intensity of the workload will be entirely dependent on how much programming experience you already have and/or how fast you can adapt to algorithmic thinking. Cannon lives up to the hype. He’s an excellent lecturer for an intro class, and he has a great sense of humor. While it’s true that he doesn’t cover the Java syntax as much as some people would like him to, I appreciated his emphasis on conceptual understanding, namely what’s happening behind the scenes of your code. Still, I recommend reading or skimming the corresponding sections of the textbooks before attending lecture to get the whole picture. Cannon doesn’t exactly hold your hand, but he does provide several resources to help you catch up to speed if you’ve never programmed before. Office hours are held almost all the time thanks to the army of TAs, there are optional review sessions on Fridays, and there’s a separate lab session (again, optional) that runs on Tuesdays and Saturdays (you pick one of the two days to attend regularly). Like most STEM classes, Cannon reserves his A-range for the top third of the class; the cutoff for an A- is around 85% in a typical semester, the cutoff to pass is 55%, and the average is curved to "a high B, not a B+." However, you are nearly guaranteed a good grade if you put in the time and effort, and it’s almost impossible to fail as long as you at least try on the homework.

May 2020

Professor Cannon is, in my opinion, one of the best educators I have experienced in my entire life. He is very very knowledgeable about the subject. But he is also able to transmit that knowledge so that his students understand it. He explains clearly, succinctly, and well. Cannon is always available in his frequent office hours, and the TAs (of which there are about 20, and all of whom are amazing as well) also have office hours every day (including Sundays and occasionally Saturdays). You get 120 hours of "grace time" in the Spring semester (I believe it's 150 hours in the Fall). You can use all, none, or any amount of this. TAKE ADVANTAGE OF IT. It is an incredible resource to have. As for the workload: I had very minimal CS experience coming into this. However, I've still managed to understand everything he talks about because the man is a supremely good lecturer. If you have the opportunity to take a class with him, do not under any circumstances switch out! It is worth changing the rest of your schedule to accomodate his class.

Apr 2020

ESP is not your typical CS class. It’s a small seminar that meets every Friday, and it only counts for a single pass/fail credit. Topics range from applications of basic algorithms to general overviews of machine learning and ethics. I thought the class was a good way to see the specific ways a CS degree can be applied in industry and academia. Cannon is listed as the professor for the course, but he doesn’t actually teach it; everything is handled by the PhD coordinators and the undergrad discussion leaders, but they all have solid CS backgrounds and know their way around the department. Even if you’re set on doing CS, I strongly recommend it as a networking opportunity, as you’ll be able to meet several distinguished faculty members and learn about their research (hint hint).

Dec 2018

"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."

Apr 2018

There wasa lot of sexual tension between these two... it was very distracting in what i wanted to be a simple home economics class. i didn't learn very much, but i definitely learned a lot about myself.

Apr 2018

He is the love of my life

Jan 2018

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.

Dec 2017

I have truly loved my experience in Intro to Java with Professor Cannon. I had a bit of experience before the class but this class has made me think critically about what it means to be a computer scientist, and how becoming a computer scientist is more than just programming. I think Cannon is engaging and hilarious during lecture, and is great about answering questions throughout class. He is incredibly understanding and looking out for the mental health and well-being of his students. When I have come into situations this semester when I have needed an extension or extra assistance he has been extremely accommodating. He is also accommodating with ODS accommodations. Even if you think you do not want to be a computer science major, I believe you should take this class! Don't let people scare you away from it, it has been my best course this semester.

Dec 2017

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.

Nov 2017

At the beginning of the semester Cannon will try to trick you into thinking that this class is suitable for people with no programming background. Do not, I repeat, DO NOT listen to him. The first portion of the class is doable, but the second half of the class isn't even covered in the textbook and is next to impossible. His tests are hard. I'm a history major, and I did the humanities track of the course because I thought it might give me some valuable skills. It did not. Instead I was left frustrated again and again and very turned off from computer science. Maybe he is good in Java, but I think he is a poor instructor in Python and should have spent more time and assignments explaining the concepts before throwing us in to very difficult homework sets to "apply our skills."

Sep 2017

Professor Cannon is great. A truly wonderful teacher. That does not mean he is easy; he is expectant because he wants to do justice to both his students and the reputation of Columbia in the Computer Science community. Cannon is a tough but fair grader. Go to his office hours if you need help as he is more than willing to lend a hand. I wish he taught more courses.

May 2017

Adam Cannon is a great professor if you're looking into the computer science field. He is a very good lecturer and explains the material very well. Along with that he keeps the class light and interesting so you won't lose focus. This is not a lecture you can skip though (well you can but I would not advise it), the class moves very fast and if you don't go you could miss out on important information for the problem sets and programming projects. This is a great class to take if you don't have any experience in the computer science field. Do not be discouraged if you don't understand stuff in the beginning the learning curve is big for this class. Along with that the TA's are very knowledgable and will help a lot. They all have different office hours as well as on Sundays when you can go to the class room for more help. There also is a Piazza page for the class to ask questions and they will answer fairly fast. Also, the curve is pretty big for this class.

Jan 2017

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.

Jan 2017

I really enjoyed this class. I had some programming experience in high school, which was very helpful, but there are lots of people who don’t have experience and still do well. If you are interested in the subject and willing to work hard, this class is very doable. Cannon wants you to succeed and so do all the TAs. There are tons of office hours, which you should go to right away if you are confused, especially at the beginning of the semester because computer science builds on itself. My advice is to start the projects early (seriously, look at the prompt before class and then try to do half of it by the next class and then finish before the deadline) and get help often. You might want to look at some online coding courses before hand, but it isn’t necessary. Many people take this class having never looked at code before in their life and are fine, but it is definitely harder because coding is a new way of thinking that might not work for you. Also, it is important to go to class because there were several questions on the final that are based on programs we went over in class but weren’t explained in the textbook.

Dec 2016

Probably the best class I've taken at Columbia so far. Definitely not the easiest way to fulfill your science requirement for the Core, but I'd guess probably one of the most fulfilling/meaningful options available, especially if you're someone who has little to no experience programming (as was the case for me). His lectures are coherent and well-planned, the TA's are helpful and accommodating, and his lateness policy is really generous (he gives you 170 grace hours for the whole semester, which you can use to submit assignments after the due date without any penalty). Like I said, not immediately easy material for sure, but really worth the temporary struggle for what you get out of it. You'll learn a lot. This class blew my mind. Take it.

Jan 2015

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.

Dec 2014

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...

May 2014

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.

May 2014

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.

May 2014

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.

Mar 2014

Adam Cannon is not a good profesor for this class. He is undeniably good for the Intro to Java, but my experience in Python is negative. He knows his stuff, and while excuses have to be made since this is only the 3rd year this course exists, he is still refining the curiculum. However, while the cotent of the lectures was interesting (read: sometimes, other times not falling asleep was hard) they were only vaguely related to the homework, and most of the time, were it not for online documentation on Python, me and all my friends in the class would have failed. Although he leaves time in lecture for questions, his sometimes sarcastic answers and interactions with students discourage many from asking. Oftentimes, he will not actually answer the question posed in class, just tells you to "deal with it" in a roundabout way, or gives a non-sensical answer. His office hours dont help: although he holds the same amount of office hours as other professors, he is teaching about 400 students at a time, so there is always at least a 10-20 student line waiting to talk to him during office hours. To be fair though, there are about 5 TAs, though they often are not clear on the specific requirements of the assignment and will sometimes give you wrong information if you ask a mildly specific/complex question on the problem sets. Desperate emails sent the day before the homework is due dont get answered until after the dealine (though to be fair, he warned us that he would take minumum 1 or 2 days to respond due to the impressive amount of emails he gets). Overall, although Cannon is a good teacher, he is not good for this course. The learning curve is very slow for the first 3 weeks, and gets incredibly hard after that. While about half the students in the class have programmed before, for the half who have not, the problema set take significantly more hours tan the 8-12 Cannon gives as reference. So start early. DO NOT LEAVE IT UNTIL THE DAY BEFORE OR YOU WILL NOT FINISH. Avoid this class unless you actually have to take it or you are pursuing a mayor/minor/concentration/ect in computer science or related fields. Takes up more time tan what is justified for a class that does not related or is not required for your degree (it is ridiculous how much time it takes away from studying for those clases which actually count towards your degree)!).

Jan 2014

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.

Jan 2014

First off, there are 2 types of people that take this class: those who have programmed before, and those who have never programmed before in their life. If you fall into the latter group, like myself, I HIGHLY recommend reading up a bit on Python before you take the class because the learning curve is steep. This review will come from the perspective of someone with no former programming experience: Intro to Comp Sci for Eng/App Sci is still in its 3rd year of infancy, so Adam Cannon is still developing the curriculum for this class. Adam Cannon is a really nice guy who often makes the types of sardonic jokes that provoke a chuckle or two, verbally assumes that his class hates him, and gives riddles at the beginning of class to those students who already know the material and can afford to spend the duration of class pondering the riddle, life itself, or if they should attend the next class. Lectures consisted of him going through topics rather rapidly (for someone who knows nothing of Python) and explaining examples of programs posted in CourseWorks. For people with programming experience, the feeling of rushing may not have been the case, but some topics he introduced--especially for the homework--could be quite challenging. We did not have a textbook, which I think would have been helpful, but I believe he is getting one next semester. Often in class, Professor Cannon would ask if there were any questions and be greeted by silence and blank stares, to which he would respond, "If 1 of you doesn't understand something, that means 10 more of you don't understand it either," sigh, and move on, so ASK QUESTIONS if you don't understand something. Those afraid to ask questions will be extremely grateful that you did. Homework consists of bi-weekly projects that can be very tricky, so try not to procrastinate on these because Professor Cannon will answer questions about/go over the homework in class sometimes. That being said, he will not baby you and give you the answer, only try to lead you on a path to finding the right answer, both in class and in office hours. The TAs are all awesome and extremely nice (even if they are all really busy), and I highly recommend going to their office hours. Both the midterm and final are written and doable, but you should study for them, no matter what programming background you have. Overall, although this can be a challenging class, Adam Cannon is a satisfactory teacher, but it is up to you--the student--to ask him for help if you need it.

Dec 2013

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.

May 2013

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

Apr 2012

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.

Jan 2012

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.

Jan 2012

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.

Jan 2012

You've always wondered if you're secretly the next Mark Zuckerberg waiting to be unleashed. I suppose this is the class for you. You can do well, but I wouldn't say it's an easy A or B. For that, take astronomy. Don't consider taking this as a P/F, as then it won't fulfill prereqs. Drat. Cannon is excited, smart and a pretty good teacher; it's hard to deny that. But he bizarrely spends more than half of the class lecturing on the basic components of computers and the capital-i Internet. Then he spends a lesson or two each on databases, SQL, XML and Python. Cannon prides himself on this tactic as it keeps students in the class past the drop date; he shouldn't. It should be reversed. Students learned little of import for the first half and either imploded or relied on prior ability for the second half. The workload seemed appropriate, however. Knowledge of programming and math isn't necessary, but will give you a major leg up. Don't forget office hours or TAs like I did. And spend time early on to make sure you ace the comparatively easy first few assignments. I failed the final, and this kinda saved my grade. Note: this class was previously known as Introduction to Computers.

Dec 2011

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.

Dec 2011

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.

May 2011

Professor Cannon is great. While his lectures aren't always structured like they're coming from an outline you can copy down, they aren't boring and they do get the information across. The point of Discrete Math is to make you learn to think through problems, and few problems in the real world just appear in your head with a clear path to get you from A-B-C-D-E. If it were that easy, it wouldn't be a problem that you needed to learn how to solve. When he lectures, he doesn't just go A-B-C-D-E, he tries to get you to think about the process behind getting to E. The class covered a lot of material very fast, and it definitely helped if you had a rudimentary familiarity with things like statistics, logic, and counting. But if you didn't he gave enough information that you should have been fine. His lecturing style is a bit free flowing. He seems to have an ordered list of a dozen or so things to get through each lecture, and will work through them. He does enjoy occasional diversions to related topics. He clearly likes the material and manages to keep what could be a very dry topic interesting. He welcomes questions, and is one of the best professors I've seen at being able to explain concepts multiple ways when people don't grasp them. If you ask a stupid question, he won't sugar-coat his response, but he won't out-right mock you either. And in one-on-one interactions, he's great. Very approachable. On the downside, he was usually 5 minutes late to class, and there was a very long lag time for homework to be graded and returned. And he LOVES his definitions. Make sure to copy them down and memorize them for the exams. You'll need them both for the terms section and also for the proofs. They're the keys to the kingdom.

May 2011

I have to disagree on most accounts with the below polemic on Adam Cannon. There are two separate issues needing to be addressed here. First, whether or not Adam Cannon taught the class well, and second whether or not it was hard and time-consuming. I can say that I thoroughly enjoyed the class and, as usual, found Adam Cannon to be an engaging and witty lecturer. It is true, he wasn't on cruise control as he is while teaching 1004, but he was still very good. His explanations were intuitive and clear and he realized that most people taking the class had not had previous exposure to a higher level of mathematics. As a result, he time again emphasized and explained to us, the importance of thinking truly mathematically as it were. In other words, he taught us to recognize the importance and place of proofs in mathematics and stated that while examples are often helpful, they are simply not adequate to understand abstract concepts completely. He sometimes proved theorems which were not in the book, so be aware of that and occasionally makes notational mistakes on the board so don't be afraid to point them out as he often doesn't notice them afterwards. I felt lost in only one of the lectures which was the one on solving liner homogeneous and non-homogeneous recurrence relations, I don't know what happened there but it seemed like Adam Cannon was having a monologue with the board for 20 minutes. In class, he asks interesting puzzles related to the material and will always give you an idea about the real-world applications of the concepts being covered. He is also just friendly and approachable. He has 4 office hours a week, which is more than most professors, although there is often a line so go early. Definitely go to office hours if you get stuck on the homeworks, he's more than happy to help. He'll rarely give away an answer but will certainly tell you how to approach any given problem.

May 2011

For a Discrete Mathematics course I felt that Cannon did pretty good job. He was enthusiastic about the course material and was clear in his presentation of core principles in Discrete Mathematics. His proofs were simpler than the textbook's but they showed the basis for core theorems and for what he expects in proofs. Cannon was also able to effectively condense a 800 page textbook into only a notebook of notes. While the textbook is huge, most of the material in the textbook are proofs and there are only a 100 or so pages of actual definitions, theorems and algorithms that you need to learn. However,I feel that Cannon was irresponsible in frequently arriving late for lecture.

May 2011

Cannon is definitely NOT a good discrete math teacher by any standard. In fact, he could possibly be the worst discrete math teacher at Columbia. Having had him for 1004, I thought he would be as a great a teacher at discrete math. He cursorily goes over TONS material which he seems not to have mastered well himself, but succeeds at covering it up. He assigns EXTREMELY long problem sets that are proof heavy. Attending class was a major time-sink as he would be late for class, his lectures were unorganized and his class examples trivial, not helpful at all when it came to doing the problem sets.Though discrete math is a useful class, I disagree it is the most important (as Cannon appears convinced) and he should be more considerate of this view. The midterm for the class was fair, but the final impossible. Of the many faults Cannon's teaching style has, the worst is probably the fact that the final is cumulative, with approximately 700 pages worth of material--including over 300 vocabulary words and proofs--to know by heart. Strongly consider taking discrete math with another teacher.

Apr 2011

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.

Jan 2011

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.

Jan 2011

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.

Dec 2010

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.

Dec 2010

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.

Nov 2009

Adam Cannon is wonderful. Funny, nice, knowledgeable, good at explaining things, basically everything you want a teacher to be. The Intro to Computers class (now renamed Intro to Information Science) is basically an overview for people who want to know a bit about computers but aren't going to major in Comp Sci, but I love this class so much that I've decided to start a Comp Sci minor. The class is not quite a walk in the park; there is some serious work involved, but it's nowhere near unreasonable and always rewarding (see below). If you're looking for a fun, useful, not-too-tough class to fill out your schedule with, this is a great option.

Nov 2009

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.

Aug 2009

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.

Jun 2009

he is a really nice prof. He was also very into his stuff. At times I felt that he went on for a bit about privacy issues but even when he did it was still interesting. The workload isnt a lot really. Except the problem sets get a bit ridic. I would suggest reaching out to him well in advance with questions about it. He is really helpful.

May 2009

great class! A.C. is funny, likable, knows his stuff, and presents information in a way that makes a relatively intimidating topic (for non science people) feel like fun. I would highly recommend this class for anyone, especially those who have little or no experience in compsci and are interested in a light challenge. the first half of the class covers things like databases, networks, computer architecture and organization (how computers actually work), and basic HTML. After the midterm, the class got more challenging, but not too much so... an introduction to programming in the language PYTHON. i found this to be really fun although it can be rather frustrating. fulfills the columbia college science requirement even though it isn't on the list!

Jan 2009

This class was so great. Adam is really thorough with his explanation and will always stop to make sure that people are following. We got bi-weekly assignments that tested our knowledge of the reading and during the last few weeks we had to make some programs using python. Honestly, if you want to try computer science but are worried that its going to be hard, this course should change your mind. If you need any help, go to the TA's office hours and they basically take you through everything step by step. They're really helpful with checking homework and making sure you're on the right track.

Jan 2009

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.

Dec 2008

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.

Dec 2007

Professor Cannon is an awesome teacher. The class has a really heavy workload, though. Most of what he teaches in class is in the book, but he clarifies it and makes it easier to understand. You have to learn all of Java code on your own though and it can be really frustrating because many times you won't know where to start. The TAs are EXTREMELY helpful, though. I highly recommend that you go to office hours at least once a week because they usually teach you Java concepts and code. The class may be hard and the workload tough, but its a class worth taking because you learn A LOT.

Feb 2007

I wish I had met the Adam Cannon everyone else seems to be talking about. Adam Cannon's class was horrible and the class was anything but an introduction. ***********ATTENTION************** If you do not have a computer science background and don't consider yourself a computer science guy, DO NOT TAKE THIS CLASS. Take 1004 instead. He lies to you at the beginning and says that even if you've never touched a computer before you can do well in this class. Nonsense! I assure you even if you have a decent CS background you WILL SUFFER. I made the stupid decision to take 1007 because I thought I had enough computer science background to ace the class. Turns out my 2 years of CS background in high school (which I had easily aced) in no way prepared me for this class. Despite what he says, this class is INTENDED for CS majors so if you're not a CS-major don't make my mistake, stick with 1004 or an easier CS intro class. I wasn't the only one who had a horrible time in this class either, I know plenty of people who suffered through it and many others who dropped out altogether. Again, take my warning, if you're not a CS-major DON'T take this class.

Mar 2006

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

May 2005

A great professor. He is nice, invites commentary and feedback during class, and even cracks a few jokes here and there. His lectures are generally clear except things got a little confusing during the data structures section, when we covered a top that our book did not handle at all (red-black trees). He likes to make things challenging but not impossible. Good office hours.

Jan 2005

Believe what you read/hear about this guy. He is AMAZING. He is nice about extensions (he's willing to give you extra time on one of the five assignments- meaning you just can't do it all the time). If you attend lectures and understand the material you will do very well on the tests. I knew some java before the class, so that made it easier, but Prof. Cannon will help you- if you're working on it, so is he. He makes himself and the TAs very available to you for help. In class he always stops and attempts to make sure everyone really understands. His lectures are generally pretty interesting and he is really a find. I am a computer science major, however, so perhaps that skews my opinion.

Jan 2005

I totally agree with the other reviews. He's a great professor, so take his class. What I found the greatest about him is that he taught more than the course material. Like, he told us in the beginning of the semester that what he emphasizes in class and the vocab definitions he writes on the board are probably going to be on the exam. Such hint is so useful when you are bombarded with tons of vocabs and info that you encounter in the textbook; because then you know which the primary and important stuff are and which are not. Also, he explicitly provided studying strategies for the midterm, which, of course, can be used in other classes. However, I didn't find him all that helpful when it came to seeing him during office hours or through email; so I got help the TA's who were simply great (I had Rachel Goldman, Cheryl Lau, and Lauren Wilcox). They basically saved my life, rather than the professor (yet that's just me; other students maybe didn't need as much help). However, I really liked prof. Cannon; it's worth taking his class and getting to know him.

Dec 2004

Prof. Cannon was simply amazing! He had this way of explaining difficult concepts in a way that made it easy to understand, and he didn't mind going over the same concept over and over again until everyone in the class was clear. He also made it very easy to go to office hours (he encouraged it every week). Prof. Cannon warned us in the beginning of the class that CS1007 is a rigorous introduction to computer science and that students who had no previous programming experience should consider taking CS1004. I had no previous programming experience, but I decided to stay in CS1007 because I knew that I would learn more in that class. Prof. Cannon said that students without prior programming experience would find the class difficult (even those who had a lot of programming experience had a hard time), but the class is do-able and Prof. Cannon made sure to say that he would be as supportive as he can. And he was. He also made class fun -- he is funny and witty and actually makes you want to go to class (and you should go. Many times he covered concepts that weren't in the textbook, and we needed to know those concepts for the exams and to complete our homework assignments). If you're looking for an easy A in computer science, then CS1007 is not for you. Take Professor Cannon's advice and take CS1004 (though I'm not sure what the workload is in that class. I know it's easier than 1007, though). But if you're looking for a class that will challenge you and make you proud of all that you've learned, then be brave and take CS1007 and make sure to take it with Prof. Cannon. He is one of the best professors I've encountered so far at Columbia. You will learn a whole lot of programming and will be surprised about the things you learn to do.

Dec 2004

he's so nice and very relaxing while teaching approachable... he's willing to have an appointment with you if you can't make it to his office hours take his class!

Jun 2004

Awsome guy, very aproachable in and out of class. Often in his office and not to upset if you stop buy. He is a fun charcter, his unix prompt displays "Command me baby:" which everyone got a chuckle from. The class is easy if you are into comp sci and a nightmare if you are not. Great intro to java course though, highly suggested for all people considering a computer science major. I decided to do it because of this course as well as a friend of mine.

Jan 2004

Professor Cannon was great. He was very approachable. If office hours didn't work out for you or if he felt you needed extra help, he would make time for you outside of his normal Office Hours. He is also extremely witty (even obscene and completely politically incorrect at times). However, the content of the course was too difficult. I am not a ComSci major, but this was even tough for someone majoring in the topic. He warned us that we should consider switching into 1004 if we didn't feel up to the challenge. I took 1007 because I wanted to study with Professor Cannon. I took his 1001 class and loved it. I should have swallowed my pride and took the easier class. If you are looking for an easy-A, this is not the class for you, but if you are looking for a challenge and struggle, have fun. His wit and humor could be worth the trouble.

Dec 2003

On the first day of class Cannon said that this course required hours of frustration in front of the computer, and he was telling the truth. Projects are difficult and long, but they do a good job of teaching java. If you do the projects and attend lecture, exams aren't too painful, and he will look over poor exam grades if you do well on the projects (get them to work). The curve is very generous reflecting the heavy workload. Overall, this course can be hell while you are in it, but in the end your knowledge of computer science is extensive.

Dec 2003

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!

May 2003

Great teacher, good lecturer and cares about the students a lot. He knows a lot about discrete math and he's very enthusiastic about it. Even though he covers number theory which other teachers who teach discrete math don't, this class is still very vaulable and u'll learn a lot from him. His tests aren't bad at all.

May 2003

Unlike the previous reviews, I did not like this professor. Before the first midterm, we learned two chapters, then afterwards we sped through about 6 chapters, learning a little from each. He is very disorganized and doesn't know how to use his time properly. Coming to class was not helpful since everything he taught was in the textbook. Most of the time the text explained things much more clearer. Going to class will not help at all with the homeworks and don't expect to get them back in a timely manner. If you take this class with him, be prepared to do a lot of proofs. This man loves to do proofs..he thinks they're fun.

Mar 2003

Professor Cannon was one of my favorite instructors at Columbia. He's really nice, and he makes learning about what some consider to be a difficult subject much more easy. During his first lecture, Professor Cannon said that students shouldn't be intimidated by the fact that he works at Los Almos because he "isn't creating Terminator." Definitely an interesting class, I learned a lot to prepare me for 1004

Feb 2003

He is definitely one of the best professors I have had! His laid back style of teaching is really something that none of the other professors possess. He is very approachable and friendly, and tries to get some participation during class. The material is somewhat dull, but since many of the CS majors have to take SciComp anyway, might as well take it with him. The workload isn't bad at all, and the tests are rather easy, since he asks straight forward questions.

Jun 2002

His teaching style opened a subject that I never imagined myself being interested in. I highly recommend him as an instructor. One caveat is don't let him convince you that the tests will be easy. Do the reading!

May 2002

Take any class with this man!! Absolutely great. One of the nicest ppl you will ever find and he does anything to help his students. He is a dynamic prof. who even makes smthing dry like cs funny! A rare gem in the otherwise mediocre cs dept. Why can't every prof at Columbia be like him??

May 2002

Prof Cannon is one of the rare teachers who truly wants to involve the students in the class. This class is taugh purely for us non-science people in the college. While it does not fulfill any requirement, Prof Cannon does all he can to get you involved in the class and interested in computers and computer-science in general. His light attitude and wonderful sense of humor makes the class fun and very enjoyable. Prof. Cannon is also incredibly accessible, responding incredibly quickly to e-mails and doing all he can to ensure that every student of his enjoys the class. While some parts of various lectures are rather boring, Prof Cannon always tries to lighten the mood by telling a few, jokes, making fun of himself, or just going onto a more interesting topic when he notices students starting to drift off. The class covers everything from a history of computer science, to a very little bit of programming. A great class for someone who thinks s/he might want to do Comp-Sci but doesn't know what it really is. This class was one of the best I have taken here at Columbia. Prof. Cannon is definitely one to look for.

Feb 2002

His teaching is reasonable, but made fun by his jokes regarding we, the not-science-inclined humanities students. He's young, and definitely played soccer in high school. You feel sorry for him because somehow you have to worry about a teacher whose mother calls him during class (yes, this happened), and who lives (alone?) with a cat named Mickey Mouse (yes, that is his cat's name). If you email him with questions and concerns, he writes back promptly. I feel that he tries to relate to students almost too much, however, since he basically tells us we don't have to show up for lectures and that it's okay to fall asleep. Of course he asked for it, right? Many of us take these two aforementioned suggestions regarding physical and mental non-attendance to heart. Fun on the days I made it to class.

Feb 2002

Adam Cannon is the best teacher I have had at Columbia. He is a really cool guy and an awesome person. He has a great sense of humor..his jokes are funny and he is so cool. All the people I've talked to about him think hes a great teacher. His lectures are really good...he's great at explaining complex ideas. He is always willing to help. He sincerely cares about his students and how they do in his class. He's a great teacher and I've also heard that many of his female students have had crushes on him.

Apr 2001

Amazing! Has a wonderful sense of humor and keeps the class flowing and interesting -- keeping in mind that this is a CS class, that's unbelievable. He actually incorporates such devices as comedy, wit, and humanity into an intro to CS class. A CS class! He is absolutely a must take for CS. Cannon is fabulous! Any class he teaches is worth taking. Any professor whose computer's DOS command line reads: is a must take! While first time CS students may struggle at the beginning, it's largely due to the sheer bombardment of new material that has to be absorbed when learning to program for the first time (many students don't take Cannon's studying suggestions seriously -- as he says he expects since he wouldn't have listened to himself when he was an undergrad). The workload is very do-able though, especially compared to what Data Structures is alleged to laden you with.

Jan 2000

Professor Cannon is your classic young, nice guy professor, who just wants to get in good with his students. Despite having over 200 students, if you reach out to him, he'll never turn the cold shoulder. He is willing to stay in his office until all hours of the night, waiting until every single student has received attention. Bearing a bit of a resemblance to Dave Matthews, he does happen to be a really cool guy. He also exudes a real enthusiasm for the subject, which is a bit of a breath of fresh air. Unfortunately, this comes at the expense of really knowing the material very well. He forgot the JAVA syntax frequently, and occasionaly was at a loss for an answer to a student's question. For people without any programming experience at all, expect to be really lost for the first month or so - Professor Cannon has a hard time getting fundamental concepts across in a coherent manner. Luckily, if you're willing to go to his office hours, and if you attend recitation, these things really do get cleared up, and by the end you really do have a strong grasp of JAVA. I would absolutely recommend him to anyone considering taking computer science.