Hi everyone, currently I am trying to learn software design & engineering by these mit opencourse courses https://openlearninglibrary.mit.edu/courses/course-v1:MITx+6.005.1x+3T2016/about
https://openlearninglibrary.mit.edu/courses/course-v1:MITx+6.005.2x+1T2017/about
I think I learn much better by these type of university courses and was wondering are there any other universities open courses on subject of software design or construction with actual projects, assignments, pdfs for learning material that other folks have used.
I think these kind of courses can help a lot of students with software design.
Open to any programming language and framework:)
Engineering Software as a Service (pt. 1 and 2)[0] had some of the all-time best ROI regarding time and effort. This is the same course that they taught at Berkeley (recordings from the classroom). It was excellent.
It was exceptionally well done, and taught me things I still cherish to this day. Assignments were graded by automated tests, which is always nice. They provided a VM for a more hassle-free workspace setup.
Unfortunately, it has been discontinued, and I doubt that it can still be followed due to dependencies going out-of-date.
Maybe somebody can weigh in with a more recent course that offers a similar experience.
[0]: https://learning.edx.org/course/course-v1:BerkeleyX+CS169.1x...
From the textbook's website, it looks like they're coming out with a v2 soon to match the second edition and the course is available through UC Berkeley's open enrollment.
Just checked the v2 and it is interesting. Thanks for suggesting dotdi & gcheong.
Could you link the v2?
I took this course when it was first offered and pivoted to being a saas founder. It was indeed exceptional.
No they can't. You are trying to force the issue. You need a concrete project and you iterate on it with features. You add gui and a database. You refactor and optimize. These courses are cookie cutter in a vacuum problem sets that give you high level ideas but not the experience of dealing with messy constraints. Also don't be open to any framework. Choose one get good, finish a project start a new one get better. Buy books on the subject. You are not going to listen your way into six figures you have to do the work.
Just read 'Philosophy of Software Design' - some really great and profound advice in a sub 200 page book with compact examples
My experience of university software courses are they are out of date and not worth it. Were I to do it again, I'd do a practical course specific to the area I was interested in.
Any practical courses that you would recommend?
I can't recommend any courses as I went do the academic route. But my experience is these academic courses do not give you any practical knowledge that will help you in industry. Were I to do it again I'd start with udemy initially as the courses are cheap and seem decent. They focus on specific technologies.
After the fundamentals, you'll learn more building something on your own than following any course.
This is even easier today than it's ever been with ChatGPT at your side.
This is terrible advice. Sounds like OP wants to learn industry standards/practices and tooling. How are they supposed to pick that up on their own? It's more likely they'll just develop bad habits, especially with ChatGPT.
I agree. You may get things done and learn some things from a solo project, but in industry software engineering is much more about maintaining and extending code you haven't written. You can't emulate that by yourself.
Do not use ChatGPT if you are beginning coding. It does not always produce valid or good code, and if you are not experienced, you may pick up on bad habits that some people's code in ChatGPT's training set has built.
It's not great for blindly generating code to use, but it's great for asking for help -debugging, planning etc. I ask it a lot of 'dumb' questions and I feel like I've learnt a lot more than I have in the past. It's given me code that doesn't work every now and then, but I'm yet to find an instance of it explaining a concept wrong.
> but I'm yet to find an instance of it explaining a concept wrong.
How do you know for sure? LLMs output is often plausible-sounding but incorrect - usually it's fairly obvious, but it can be subtle enough that I would not suggest using it until you've learned the old fashioned way and can better judge whether the LLM is wrong.
Like all software you run it and see if it works.
> Like all software you run it and see if it works.
"Oh my god, where are my files gone ?"