for Oregon State University's Computer Science Post-Bacc Program
Upper Division
Elective
CS 381
Programming Language Fundamentals
Filter:
10
Reviews
11
Hours per Week
2.6
/ 5.0 Difficulty
CS 475:
3 times
CS 321:
2 times
CS 352:
1 time
Page 1 of 1
Good class. Very well organized. The reading, though. There’s so much reading. I work full-time and took a second course so I started assignments early about halfway through and I found I was ‘still’ only finishing the assignment the day it was due. Assignments felt like puzzles. Trying to get myself to rewire my brain to understand how to use a new language + paradigm from scratch ‘and’ do something useful with it was a true brain-teaser. My biggest regret is not doing all of the textbook readings before taking this class. I could have spent all of my time just on the code and really submerging myself in learning the different paradigms, but I found I was pressed to read quickly and code quickly to make sure I hit the deadlines and I really enjoyed the readings.
Submitted Fri Dec 22 2023
Good class! I learned a lot about how to learn new programming languages and why/how the different programming paradigms exist today. The readings could be super long some weeks and the quizzes were sometimes weirdly specific (asking a question that was mentioned once in one paragraph of the two chapters of reading assigned) but you get multiple chances so it's mostly fine. Programming labs were helpful too
Submitted Tue Jun 20 2023
The only reason I didn't put this as "anyone can get an A" is due to the homeworks and quizzes. They can be quite difficult and pull questions that are not from the textbook or the course material. For the homework, this is fine since it's open internet and you're encouraged to research the questions. For the quizzes (20-minute time limit and not open internet), this is not fine if the question isn't something you can reason out. The homework and quizzes together make up a good chunk of your grade. However, the programming assignments are not difficult at all and the last two labs offered extra credit.
Submitted Tue Jun 20 2023
This is by far the most organized class I've taken in the program. Project assignments are spaced 2 weeks apart and are front heavy. Don't slack on the weekly book readings as you need it for the quiz! It could be daunting reading multiple book chapters per week, but the material is easy to understand and could be finished in a couple hours. As others have mentioned, you'll come out of the course with greater understanding of programming languages and programming paradigms. I definitely recommend taking this elective!
Submitted Sat Jun 17 2023
This class was super insightful. After taking it, I feel like I can jump into the docs for any programming language and understand what's going on. It is basically a survey course, so you get a treatment of all these different aspects of programming languages and paradigms, but it doesn't necessarily build to something like a big portfolio project. I really can't overstate how much more competent I feel as a CS student after taking the time to internalize the material. Learning about things like static/dynamic scope, memory management, and typing were a big boost to my technical understanding. I think the course should be required for the CS degree because you can come out of it "knowing what you're talking about" when it comes to programming. Regarding the workload - every week there is a really well-crafted set of explorations, and then book readings which are frankly a little much for an undergraduate course some weeks. I'll definitely be revisiting some of the textbook chapters that I skimmed, however, because the knowledge is that valuable in my opinion. There is a homework quiz each week (10 questions) that you can take 3 times, and a "quiz" quiz (10 questions) that you can take twice. The homework ones tend to pull more from explorations and the quizzes tend to weigh more toward the textbook. You can get away with searching the material if you didn't read very thoroughly. I disagree with others who say that the questions are gotcha questions. The answers tend to either be stated directly in the material, or require you to do about 1 step of inference/deduction to figure out. They actually mostly come from the textbook. There were a few times where the wording was a little confusing, but you get multiple tries to get things right. There were also labs, which are coding projects, due every two weeks. Each one is about a different programming language/paradigm and requires you to quickly pick up the basics of a language. Don't be intimidated by that; they don't really require you to do anything advanced in the language. They're basically in descending order of difficulty/time requirement. The first one on regex is the hardest and also probably the most valuable. None of the projects is harder than one of the easier Data Structures projects, and the easiest one is probably on par with one of the easy projects in 162.
Submitted Tue Jun 13 2023
Great course! My favorite elective! It's in the top 3 best OSU post-bacc classes of the 15 I've taken here, along with 261 and 271. The material is interesting and I think is making me a better programmer. Projects are great. Challenging enough to make you engage with the material, but not impossibly hard. The quizzes can be tough and a little frustrating to determine the answer sometimes. Like, sometimes the question is ambiguous and there are multiple answers that could be right depending on how you read the question. But I also really appreciate that the quizzes challenge me, when many classes at OSU are a joke. Also, this class is a requirement for 4-year degree people, and I think it should be required for the post bacc. Learning the theory of how languages can be structured has improved my understanding of the languages I know and will help me learn new ones faster. And the practice of learning 4 new languages in this class will also help in that department.
Submitted Mon Jun 12 2023
This class is structured well compared to most classes in the online post-bacc degree. It covers a lot of basic topics such as programming language history and the difference between compiled languages and interpreted languages, which every CS student should probably be familiar with. I can see why it's a requirement for the in-person degree. However, in practice, I found that there were few useful topics covered in the class that I hadn't already pieced together on my own or been exposed to by the time I took it (this was my last class at OSU). It would probably help most people more if taken early on in the degree, especially before CS 344, since it's a more gentle exposure to C than that dumpster fire of a class. The text was extremely dry and felt like a firehose of information. The module readings are better, but don't always cover enough to answer all of the homework/quiz questions. Speaking of, the homeworks and quizzes are filled with gotcha questions that ended up making them more stressful than just taking a final, in my opinion. There are introductory videos for every exploration, but they are so short they're basically pointless. I skipped every single one after the first couple modules. The topics covered in the class seem like they should have a lot in common, but they end up feeling very disparate. There are very few sections that are built on in later sections, so you can basically forget everything you learned every week and it won't matter. The labs are also disparate forays into different languages that don't build into an overarching theme (there is no portfolio project). They are pretty fun and interesting though - the labs were definitely the highlight of the course. Overall, I would say that this class was interesting, but not terribly useful. If you are the type of person that really likes formal grammar and prefers reading and self-teaching over video learning, it might get your gears going. But then, you could just read the text on your own and save $2k. I would recommend 450, 475, 492, and probably 493 over this class, depending on your interests. TL;DR 381 is good, but not great.
Submitted Tue Jun 06 2023
Along with 492 definitely among the best course in the program, core courses included. There's no final, and HW/Quizzes/Labs make up roughly equal weight of your grade. You learn a lot of different programming paradigms and how languages form their context. Some of this is more practical experience than others (RegEx vs Prolog for ex) but its all valuable knowledge none-the-less. Having now finished the degree I can safely say the labs are extremely engaging (and the most engaging of any coding assignment in ALL of the courses I've taken, 492 & 475 being my other two elecs), although the last two do taper off somewhat in terms of length (mostly bec. they're relatively easy). The first two labs are very difficult, so start early and don't underestimate the time required. My only real complaint is to be prepared for an excess of rather silly 'trick-me' questions on both the HW and Quizzes (thankfully both open note) that are much more theoretical and serve no purpose, holding little real-world industry value. You'll love the first 3 labs though, as they're very relevant and useful in building programming skills, as well as a knowledge of RegEx. This class really helped me become a more well-rounded programmer, understanding the 4 different language paradigms, and it also helped me solidify my knowledge of data-structures (lab 2 is heavy on hashes with Raku). You'd be crazy to pass this class up, as so much of it (through the labs) is demonstrable programming experience (and thus building your problem-solving ability), which I found to be quite lacking in the program as a whole.
Submitted Thu Jun 01 2023
This is one of the best classes in OSU post-bacc, everybody should take it. You will learn programming language history plus 4 languages: Raku, Ruby, Scheme, and Prolog. This is perfect for OSU's Python heavy curriculum because you will learn how to learn other programming languages. The format is forgiving, no exams, just Gradescoped projects and weekly multiple choice quizzes. But the quiz questions are really hard. You will be expected to parse code from C, Java, and other languages not taught in the course. Reading the textbook is necessary to do well on the quizzes. The projects are fun, the first two labs chain together to create a resume worthy project (NLP song title generator in Raku), but it's not a portfolio project, so you can't post it publicly on Github. The projects are really tough too, you'll spend a lot of time struggling to learn these languages from official documentation, but I think it's good muscle because that's what work is really going to be like. The recorded help sessions were super helpful, I recommend waiting for those recordings to come out before actually starting labs.
Submitted Mon Dec 12 2022
Take the first two labs seriously and start early if you've never worked with regular expressions before. Other than some ridiculous/nitpicky quiz questions, it's a very fair class: 5 programming labs, 10 untimed homework quizzes, and 10 timed quizzes. Get a pdf of the textbook to reference for the homework.
Submitted Mon Dec 05 2022
Page 1 of 1
Course Analytics was developed for students of Oregon State University's online Computer Science program. The data on difficulty, time commitments, course pairings, and tips have been submitted by real students using this survey. Feel free to add your own reviews if you are a current student! The data is scraped from this spreadsheet.
Course Analytics is an open source project by Nic Nolan.
View the repository on GitHub