CSC151
Schedule
Readings
Labs
Search
About the Course
CSC 151
Functional Problem Solving with Scheme
What questions about the course do you have that are not answered by the web site?
Will the exams be a paper with paragraphs and that fun stuff, or is it going to be a project type thing?
The exams typically consist of 10 problems (not of equal difficulty) to solve. That usually means writing a procedure, documenting a procedure, or fixing broken code we give you.
I believe there are many different kinds of codes that can be used. Which will this class use?
I'm not sure what this refers to. If programming language, then Scheme.
Is Scheme a common programming language?
Yes and no. It's been taught a lot since its inception, and while it was designed as a pedagogical language, its simplicity and flexibility have given it some proponents in industry as well. I know of one medical robotics company that uses it to control its robotic arms (that run experiments) in a safe way. However, while the vast majority of new code produced today is in other languages, knowing Scheme will enable you to think robustly about expressing algorithmic solutions in the subsequent languages you learn.
What is Scheme used for? Is it a programming language used to instill basic skills or is it useful for a particular thing?
To follow from above, Scheme is designed to teach some very powerful (and cool!) programming concepts that some people don't see until their third or fourth year of CS (if they see it at all); we'll use these features in the fourth week of the class! In a nutshell, Scheme is what we call a a functional programming language, so it's very useful for transparent parallelization and making sure actions are safe (because they don't rely on state).
I was wondering why exactly we choose a high-level programming language - Scheme for this course.
While "high-level" is always relative, we want students to be learning more about the concepts of computing than worrying about low-level details. You will see more of those in the second and third courses of our introductory sequence (e.g. 161 and 207).
What is the benefit/consequence of choosing to take or not take the final exam?
No consequence for not taking it. I'll tell you the last week of class what you would need to get on the final to raise your grade so you can make an informed decision of whether to take it. (Many students grades are such that they can't mathematically alter their grade by taking the final.)
How much time outside of class do students typically spend finishing labs?
I suppose that depends how diligent one wants to be. I try to allow you time in class to complete as much of them as possible. If you work with a tutor around, it shouldn't take longer than 20 minutes.
Are there any required reflections to be turned in based on the class readings?
No, but I won't typically lecture in class, so just come prepared with any questions you may have. Once we address those, you'll apply the readings in collaborative laboratory exercises during class.
Out of curiosity, do you keep track of the percentage of students who take 151 who then go on to take more computer science courses?
Formally, no, though the department is aware of enrollments (continuing beyond 151 seems to be on the increase recently). We could easily ask the registrar for this information, though.
What are your thoughts about online resources not listed on the course syllabus, such as Codeacademy (http://www.codecademy.com), not exactly to use for this specific course, but generally as a way to play with computer programming?
I admit to not having much experience with Codeacademic in particular, but it seems like exactly the right approach to teaching basic programming (though our course and subsequent courses will help you develop a more complete view of computer science and software development).
Also, would homework and exams require only working in the CS workstations?
They do require our special software, but we have a bootable thumb drive you can use to run it from any computer. I think. Stay tuned.
Jerod Weinman
Created 6 January 2014