Principles of Imperative Computation
cs.cmu.edu
cs.cmu.edu
The course is really about developing techniques for reasoning about low-level software. You build up abstractions in C by leveraging contracts and writing proofs of correctness based on those contracts.
Explore the "Learning Objectives" section to read about what the course really entails: https://www.cs.cmu.edu/~15122/about.shtml#LO
This was the first computer science course that I took at CMU and it was absolutely mind blowing for me. I had previously taken AP CS and had played around with making games in flash and writing little programs for my graphing calculator. But this course taught me how to reason about my programs (and why that might be valuable, to begin with).
That seems like an essential part of what programming should be about? And imperative programming has it’s own considerations on how to go about it. I don’t see how it is a misnomer.
I didn’t major in CS, but I wanted to take some CS classes. Several times I had to go back and forth with the course instructor and the director of undergraduate studies in the department, trying to convince them to let me take the class, or at least audit it or get access to the course materials if it was filling up.
I was mostly successful, but there were a couple times where I was told I simply could not take the class because I didn’t take the prerequisite. As a lifelong computer nerd and capable programmer, I could have sat the exam for the prerequisite classes without preparation and passed, but they did not allow this.
If there are open spots in the classes after all the CS majors signed up for it, then why not just let anyone take it if they’re up for the challenge? You can warn them about the prerequisite knowledge, so if they fail it’s completely on them.
You may also get permission from an advisor if you performed very high on the CS Assessment on Canvas.
I took the course over the summer as a music major and subsequently took several other CS courses as a music major after having a discussion with an advisor in the CS department. I ended up finishing a CS degree a year after my music degree. CMU was really great about providing opportunities for students to explore courses outside of their majors, especially over the summer.Honestly for the larger CS classes I took, there were enough people in the class that I doubt anyone would have noticed a person slipping in to a back row seat and just quietly watching. More than once I sat in on classes that I thought I might want to take, to get a better sense of the content and the professor's teaching style.
I'm working on a Masters in Economics right now and laughed when they tried to make me take a pre requisite in college math that covered stuff like functions...when I have a bachelor's in engineering and had to take differential equations and multiple years of calculus. I told them flatly it wasn't going to happen and they rechecked and waived it as not being necessary. In your case, they can't see accredited proof of your years of programming experience and the beauracracy doesn't care enough to let you sit for the exams in the other class.
If retaking a prereq is a huge boost for you, you didn't learn it well the first time.
In many of my early college classes, there were people who already knew most or all of the material and were just there because they had to be.
I ended up getting to know one faculty member and having them back me up when I needed it, but it was still a bureaucratic mess every time. Meanwhile in my own major’s department, anyone could basically sign up for any class freely, as long as they agreed to accept the consequences of not being prepared enough.
If a university blocks someone who is capable, but lacking pre-reqs, from taking a course there is no real cost to them, and little to the student. (At least for me there were more courses I was interested in taking than I had time to take.)
If a university lets someone take a course without pre-reqs, and that person lacks the required foundation and does badly in the course, it's bad for the student (time wasted) and bad for the university (disruptive to the course, bad in University ranking exercises).
Pre-reqs are not perfect, but it's also hard to assess what all potential students are capable of before before taking a course in the same way that job hiring is difficult. So they are a reasonable approach.
I guess the rules make sense, but it does seem silly that I ended up better off studying something random and getting a job as a software engineer, than actually studying specifically to be a software engineer.
> or passed 15-112 (Fundamentals of Programming)
> or equivalent.
> You may also get permission from an advisor if you performed very high on the CS Assessment on Canvas.
Maybe they feel that people who have trouble reading a syllabus would have trouble completing the course?
Step 2: See a function.
Step 3: Ctl+Click on it.
Step 4: Read the code.
Step 5: Go to step 1.