Pre-Break Survey

Summary of responses to the Pre-Break Survey

How is the class going so far?

Too slow: 0
A little too slow: 1
(Write-in) On the right pace: 1
(Write-in) Just good: 1
A little too fast: 9
Too fast: 5
Way too fast!: 4

(There are 11 people in the class who didn't submit any survey, which I guess I should interpret as "Too slow".)

This is about what I expected, and probably means things are a bit too fast. I intentionally don't include an option on this question for "just right", since its too easy to click that (and highly unlikely the pace could be just right for more than a very few people), and I want to make people think more about their answers.

One thing I hope to enable with the Tae Kwon Do-style grading is for the course pace to be more variable to fit different students better. But, I still don't know a way to do this with only one class meeting and no good way to sub-divide (unlike what is done in my daughter's Tae Kwon Do classes, where the 2-3 instructors can split up the 8-12 students into smaller groups based on their levels at different points during the class). If anyone has any suggestions for how to do something like this in our class, I would love to hear them!

Will you be at class Friday?

Yes: 12
Yes, in person, but my mind will be elsewhere: 5
No, unless we have a super-important required activity: 1
No, no matter what: 4

(I'm interpreting the 11 people in the class who didn't submit any survey, as most likely "No, unless we have a super-important required activity" based on their non-responses.)

Looks like enough people will be here that we should have class Friday, but we'll make it a question and answer class rather than covering any new topics.

I should probably do a survey to find out how many people are "Yes, in person, but my mind will be elsewhere" on most days! In general, if you are not in a state where you can be focused in class and get something out of it (and contribute something to it), its better if you get some sleep instead of coming to class.

I hope everyone finds classes worthwhile and try to make them as engaging and useful as I can, but I think you should have a good enough idea what to expect in most classes and what is the most valuable way to use your time to make smart decisions yourself if it is worthwhile to come.

What topics would you like to see in the rest of the class? (Check all that you want)

Artificial Intelligence: 17
Computer Security: 16
More on Encryption: 9
Web Applications: 8
Other programming Languages: 7
Internet: 6
More about how Computers Work (hardware): 5
Fundamental questions about computing: 5
History of Computing: 3

Other suggestions: quantum computing, games, data analysis/manipulation, philosophy of computing, finance applications

What have you found disappointing about the class so far?

(Below are all the comments recieved, with my responses to some of them.)

The class is interesting but the opportunity cost of the projects to my other classes has been rough at times.
Office hours are not always helpful in solving problems with my code.
Sorry to hear that! That said, you shouldn't expect office hours to be mainly for "solving problems with your code" - the focus should be more on helping you understand the underlying concepts and what is going on so that you are able to solve problems yourself.

The office hours in the day or two before assignments are due are usually crowded so there isn't enough time for everyone. The office hours that are not right before deadlines are often much less crowded, with enough time to really go through things and hopefully understand. So, if not getting enough time for all your questions to be answered well is the problem, I definitely recommend coming to the earlier office hours!

Haven't perfectly understood how language is actually implemented in computing
This isn't expected yet, but later in the semester you'll implement your own interpreter, so will understand everything about how programs execute (at least down to a certain abstraction level).
Just a couple of times I feel like some important topics from either the textbook or online weren't really explained fully in class

I'm surprised it isn't more often - there are lots of important topics in the textbook and online that we don't have time to cover in class. I try to focus the class time on the things that are both most important and benefit most from in-class presentation (e.g., I believe things like Python programming constructs are much better learned from the on-line course, so don't spend much time on them in class; more abstract things like the Θ notation are better learned by reading the coursebook (although worth spending some time in class).

That said, if there are things covered in the on-line course or coursebook that you think are important, but are confusing or need more explanation, make sure to ask about them so I know to cover them in class.

The only problem i encountered was on the projects not all of the problems have test cases for us to know if our code on that part of the problem is really working or not. A example of that is on project 3 we don't have a test case involving the offshoot to see if our offshoot part of the program is right on the rewrite function and neither for the flatten_commands function.
This is a good point, and I've provided some test cases for most of the problems in Project 4. As you develop as a programmer, though, you'll realize that part of being a great software developer is being able to come up with good test cases. This requires thinking about the unusual inputs where a program might misbehave, and designing test cases to cover those. So, although I've tried to provide fairly comprehensive test cases for Project 4, for some of the later projects it will be important for you to be able to think of both good strategies for testing your code, and specific test cases on your own.
Great class, I'm loving it
I feel like the Projects and the content of lectures are very disconnected from one another.
I would like the examples we do in class are is being taught in class to be very helpful for the coming up projects.
I feel like what we do in lecture doesn't really prepare us for projects. I'm also not really confident about recursive functions.
I find the lectures interesting but occasionally I struggle to see how they connect to the projects which can be frustrating.
Often times I struggle to see how the lectures relate to the projects.
A comon theme in many comments is about lectures not preparing you to do the projects. This is understandable, but I think stems mostly from having the wrong expectations.

One thing I think you are expecting from other courses is the model where lectures introduce material and are supposed to cover everything you need to know to do the homeworks, homework assignments reinforce it and make sure people are attending class, and then exams test if you remember it. In my view, this is not a good model, but it is understandable that you are expecting this based on the prevailing experience you have had in dozens of previous courses, and frustrated when it the way the class works is different from your expectations.

In my view, the opposite model makes a lot more sense: projects introduce material, and then lectures use that basis to provide more conceptual depth and context.

What we do in this class is a bit more of a hybrid — some concepts are introduced in lectures, and others are introduced in the projects. In my view, lectures (especially in-person ones) are a horrible medium for covering technical material. I agree with Robert Talbert's description here that there are some things lectures are good for: modeling thought processes, sharing cognitive structures, giving context, and telling stories (I would add building community to his list), but they are not a good medium at all for information transfer or covering material. (At least according to Talbert, my cs101 lectures, at least, focus on doing the right things in lecture.)

You shouldn't expect the lectures to cover everything you need to do the projects, or that everything in lectures connects closely with the projects. That said, most of the things we do in class do connect to the projects, often quite directly. But, sometimes it is left up to you to figure out the connections. (Other times, like when we did list_flatten, the connection is meant to be obvious and directly helpful for a particular project problem.)

"more news/broad learning about machines and role in world/applications to real life would be great. also the reading plus the udacity videos is a lot of work outside of class that arent deliverables.

i like the class a lot on the whole. "

I found out the classes are too short. :(
At least for the videos, you can watch at 1/2 speed if you want them to be longer. I'm not sure how to do this for the in-person classes, though. ;)
n/a
I'm not sure I understand what "n/a" means, but in future surveys please remember the course pedge you signed:

I will provide useful feedback. I realize that this is a new and experimental course, and it is important that I let the course staff know what they need to improve the course. I will not wait until the end of the course to make the course staff aware of any problems. I will provide feedback either anonymously or by contacting the course staff directly. I will fill out all requested surveys honestly and thoroughly.

That I'm learning more from the online course and doing the projects than in class
This is what I would expect, so I don't think it should be disappointing (unless you think its a problem that you are paying tuition, but the things you are learning most from are available to anyone in the world for free; but, you should view the main thing you are paying tuition for is to be part of a community and to have direct access to the people in it (including, but certinaly not limited to, me and Yuchi, for this course).

Some of this should be because of the time you are spending on them, which I expect is more total time on the on-line course and projects, than you are spending in class. But, it may also be because the person-effort-per-minute that went into producing the on-line course is about 10-100 times what they are for the in-person classes, which hopefully does make it better than the lectures.

I have been disappointed in the differences between class, projects, and online lessons. I am able to understand with some difficulty the online lessons, however class is more confuses me more than clarifies aspects of projects/online lessons. The expectations for the projects are so high that it seems like the only way to succeed is to go to office hours, rather than look online or at class notes or the python manual. I REALLY loved the outlook of the class in January, how more focus would be on thinking and problem solving and understanding computers, however I feel like the actual path of the curriculum has not been consistent with the initial message.
I think both of your points are good, but also a bit contradictory (either that, or I'm not understanding them well, and would encourage you to come to office hours or arrange another time to talk). The expectations for the projects are high because they "focus on thinking and problem solving and understanding computers", not on things you could do just by repeating what you've seen in class or the on-line materials. I do, though, plan to get more into deeper issues in problem solving and understanding computers later in the course, now that everyone (hopefully!) has a strong foundation to build on.
projects have been a little diifficult
Nothing really. I really like this class in general. It is very interesting and makes me really think!
If you come to class with no expectations or with a pessimist attitude, you will only be met with pleasant surprises or met expectations.
The optimist is always happy and hopeful, but nearly always disappointed; the pessimist is grumpy and sad, but nearly always right. Best to folow Alan Kay's advice an invent the future you want, and then you can be both an optimist and right.
I really enjoy the class, but I think the class is going a little too fast. Most of the time (especially during last few lectures), it is very hard for me to understand what is discussed in lectures. I hope that we spend enough time on basics before going on to complex concepts. Projects are really challenging (sometimes very difficult), but I think office hours are very helpful.
For me, getting the problem sets done on time have been a major challenge. I feel as though I am learning a ton, but I am really having to struggle to finish things.
I don't think I have learned anything in person. Most of what I have learned has been at home. I am not very good at piecing together the basics because I don't feel motivated learning in the stale youtube world, which is why I am so behind.
I totally understand not wanting to watch videos - I feel the same way. One option is to read the notes instead (see Notes for links to notes for all the cs101 units). I think it probably works best to read the notes, try the quizzes on-line, and only watch the videos when you can't get things from the notes.

Unfortunately, I don't know a way to make the in-person classes substantially better. I do try, of course, and am open to any suggestions you have about what would make them better for you (but with the constraint that they can't make things a lot worse for everyone else in the class), but its unlikely that if they have not been working well for you so far that they will suddenly start to work better. So, take the time you are spending in class to do other things that will be more effective. There are lots and lots of other ways to learn the core material in this class; find what works best for you, and don't spend time on things that clearly are not working.

This class is not made for a student that has to simultaneously work. I want to put in more but I don't have the time or availability to come to office hours because I need to work 20+ hours to cover my rent, utilities and food. The content is great, but it's not feasible for me to work as quickly as is demanded. I appreciate the belt system for that.

I think, UVA in general, is design for full-time students and not well-suited to students who have to work as well. I have huge admiration for anyone who can manage to work their way through college, and its great that you are doing this.

What would you like to be different about the rest of the class (from how things have been so far)?

Things have been good but a little vague at times. I feel like this has been someone by design however.
Maybe do a quick review of audacity lessons.
That's "Udacity" (see this blog post for how Udacity got its horrible name).

I'm happy to answer any questions about this, or go over things you want explained in them, but you need to ask me to do this. Its enough to just ask, "please explain section 3.12 in class", if you don't know how to forumlate a specific question, but without this I am not likely to go over things in the on-line course since I mostly agree with how things are covered in it.

Include test cases on all of the problems on a project and talk about classes and dictionaries on python.
Yes, we've been avoiding classes so far, but will get to them later. I've started using dictionaries in code examples, but haven't explained them yet, but will do so soon.
I like how we have projects and ways to get a "belt" if we turn things in late.
I would to have one project where I write 100% of the code so that I understand exactly what is going on.
You will mostly do this for Project 4 (other than providing some tedious code), and if you make it to the "Black Belt" project, that will be entirely up to you (both to figure out what to do, and there won't be any starting code).
"Maybe more dynamic questions, like poll questions instead of asking if anybody knows something. I think everybody would pay more attention."
Do you mean in slack or in class? I tried a poll in slack, but got very few responses. I can do hand-raising polls in class (unfortunately, our attempt to use a secure computation protocol to do a privacy-preserving poll didn't go so well!)
I would like to learn more stuff regarding the projects prior to having to complete the coding for them.
I would like more consistency and connection between the online lessons, class time, and the projects. The past two weeks have been especially confusing with list_map, list_accumulator, list_mapper, mapper, etc. I feel like if more time was spent on "this does this", "when I type out this here, it is now using this", I would have better understood the last two weeks. I am not asking for things to be simpler or for my hand to be held, I just would like more correlation and explanation.
maybe do more examples of computing in class
"For projects, to give more expressions to test and what these tests should output. It was difficult to solve some problems, if you do not know exactly how to test them. Some questions could use a little more explanations.

One time, for example Class 14, I was very confused. I think if the material is complex, maybe it is better to use simpler expressions to explain difficult material. "

The best way to get me to slow down is to ask questions! There were some slides in Class 14 with lots of code you weren't expected to understand completely, but you should feel free to always interrupt class to ask about anything.
Maybe more smaller homeworks for more practice? That might not go over very well but it will allow you to know that we understand the different parts of python and topics from the lecture as well as further cementing these ideas for us. That way you can also receive constant feedback on the speed of the class. Also, if they're physical worksheets then they will promote lecture attendance.
There are tons of practice problems in the Udacity course, including optional extra homework sets for most of the early units. We don't want to spend a lot of time grading so aren't assigning lots of homeworks, but you can find plenty of problems to do on your own, and I'm happy to explain any questions you have about them.
I really like the idea of belt promotion system. I can really put in best efforts without worrying too much about grades. I also like that most of our belt promotions are based on projects instead of tests in that if I put in enough efforts I can get good results. I hope that rest of our belt promotions were in forms of projects rather than tests.
Awesome! There will be a test as part of the Blue Belt promotion, and I think its important to be able to check what people can do on their own and to answer questions that don't fit into the projects.
Less reliance on Udacity would be cool. I don't really like how I'm kinda doing "two" classes for this course.
More time to do the problem sets.
More help session in class before starting other things, sometimes I come in, and I don't really understand the lesson even if I watch or read the chapter/unit.
If we actually code in class and try things out, I think it would help to keep us engaged.
I've tried this a few times with worksheets and giving people time to work on solving problems themselves, but don't think its worked well enough to be worth spending more class time on this.

Anything else you would like to say or ask?

I'm not feeling so motivated to go through the online part of the course since it is not so related to what we are talking about in class, but I will eventually have to go over them because they are needed to complete projects so they are kind of stressful to me.
I'm not really getting this (but maybe its related to the different expectations about how lectures-projects-materials are supposed to relate). The on-line lessons are relevant if they are "needed to complete projects", but this shouldn't be stressful (unless you wait too late to start!). It should be pretty clear what parts of the Udacty course you are expected to do before doing the projects.
I think the projects are really difficult and very time consuming. A lot of the projects are things that are barely demonstrated in class, and in order for me to do the projects I have to use google, or go to the TA's and ask people who are majoring in computer science. For an introductory class, it's really difficult for me, maybe it's because I can't think logically, but I feel really stressed because of this class.
Yuchi is very helpful in office hours and I can't thank him enough for his help. The class has been very interesting so far and although I have some questions about what my actual grade is I am excited for the second half of the class.
I want to say that I really enjoyed the message you put forth in the beginning of the year. I love the belt system and your belief in that traditional CS courses haven't been getting the job done and you wanted to provide something different. I personally would like the rest of the class to be more informative and applicable. I don't see myself taking another CS course at the University, however would love to leave CS 1120 feeling like I know what goes on inside my computer, in the programming world, with the internet and the deep web, and like I have some coding experience, whether it's useful or not.
N/A
I hope that the due date for project 4 is pushed back just a little. We do have plenty of time until the due date, but since it is spring break, there will be not be enough office hours to attend do. I hope that the due date is pushed back to allow time for getting some help.
The Udacity course takes up an enormous amount of time to complete, and that is where we have to learn everything from. I understand the concept of a flipped classroom, but I feel like the three hours spent in class per week is when I should be learning, not having to go to class for three hours, and then spend at least four hours extra trying to teach myself something, with another hour of reading the textbook, and then stressing out about having to do the Projects, which I think I spent 10 hours in office hours to be able to complete.