ossu / computer-science

:mortar_board: Path to a free self-taught education in Computer Science!
MIT License
166.68k stars 21.06k forks source link

RFC: Move the Missing Semester Later in the Curriculum #778

Closed waciumawanjohi closed 3 years ago

waciumawanjohi commented 3 years ago

Problem: The Missing Semester is a challenging course early in the curriculum.

Duration: 2020-09-10

Background: The Missing Semester is meant to teach students how to use a number of tools of computer science. These include the terminal, git, and vim.

However, numerous students have given feedback that the assignments are quite challenging. Examples can be found in this issue. The course also occurs quite early in the curriculum.

In addition, the courses immediately after this one do not leverage the lessons learned. How to Code is taught entirely within Dr. Racket. Students will most benefit from exposure to command line environments before studying operating systems and networks.

Proposal: Move The Missing Semester immediately before Core Systems.

Alternatives:

  1. Students could be advised to study different sections of the course at different times in the curriculum.
  2. The course could remain in place.
spamegg1 commented 3 years ago

I support the proposal.

Galmoli commented 3 years ago

I also support the proposal.

Exkywor commented 3 years ago

This sounds like a great solution!

cauequeiroz commented 3 years ago

Great! I'm doing this course right now and it really has a lot of content, tools, techniques and concepts. Once I will spend the next few months at programming/math classes, probably I will forgot 70% of the content and I will need to do it all over again.

So, I like the idea of taking this class later in the curriculum.

stormrage9100 commented 3 years ago

I completed the 4th lesson now and I strongly agree that this course should come later in the curriculum.

Chuphay commented 3 years ago

It sounds like cs50 has its own IDE. And I know that Nand2Tetris supplies its own software. Perhaps it'd be better to fit this in after those classes but before operating systems. (I don't know networking, so can't comment on it).

krishnakumarg1984 commented 3 years ago

I have been using bash and vim for a really long time. Where I did my PhD, the program administrators required that everyone in their first year of PhD (irrespective of degree enrolled, students of medicine, humanities, everyone), do a 2-day software carpentry training course that covered shell, automation and text editing at a command line. I am not a CS major, but I still picked this up rather quickly, and was using them daily in my research.

I don't know if it is so hard that it needs to be deliberately moved beyond various CS subjects. I find algorithms, programming etc hard relative to some basic filesystem moves etc at the command line.

robbrit commented 3 years ago

I agree that moving it later is a better option, but not because it is challenging. I agree with @cauequeiroz in that if you don't use these tools right away, you will probably forget them. Might as well teach them either immediately before or in parallel with classes that will take advantage of these skills.

Exkywor commented 3 years ago

My main concern with moving it later is with things that are easy to understand but require a lot of time to get comfortable with, like Vim. If you leave it too late, the projects you're gonna be working on are going to feel extra hard if you're just learning Vim, while if you begin it early you may have a bit of an easier time since the courses are not on the same level. I myself haven't reached that far into the program so I can't really say for sure though.

dhruvmanila commented 3 years ago

I am in the middle of the course and yes there are a lot of tools introduced but for me, this seems like a good choice to give the students the knowledge about the existence of these tools so that they start using it. I've been using git and terminal right from the beginning of the curriculum and also created a personal repository just to test different topics of git.

I would say to take this course as an exploration of what's possible and come back to it when you need it.

krishnakumarg1984 commented 3 years ago

The course is all over the place in the content coverage (and hence, the "missing semester" title, I get it).

I strongly believe that one shouldn't proceed too far into the OSSU curriculum without knowing some form of version control. This can be an invaluable tool for incrementally working on homework assignments. (eg. can progressively make small commits towards attaining an optimal solution to algorithm homeworks, without worrying too much about messing up/destroying currently working code).

I think a strong substitute in the early stages are the lessons from Software Carpentry, especially the git lesson (and the Unix Shell lesson).

Software Carpentry is a non-profit organization founded nearly 10 years ago by a professor at Univ of Washington, and they run regular 2-day FREE workshops all over the world, where these lessons are covered.

The material itself is licensed CC-BY.

Later on in the curriculum, the "missing semester" could be revisited. This sort of breaking up a course within OSSU curriculum is already advocated for CS50 (I think, where the guidance is to skip the 2nd part or something).

isoaxe commented 3 years ago

I think the proposal makes a lot of sense. No need to burden the students with topics that will not be useful or relevant right away. It would be better to do the courses later as proposed, where the student might get practical application from them soon after completion.

krishnakumarg1984 commented 3 years ago

In this case (or moving it to a later stage), we need to insert the software carpentry's phenomenal git course, which can help to version control their homeworks (for all courses).

waciumawanjohi commented 3 years ago

Close of the Comment Period

Findings: The majority of contributors agree with the reasoning for moving The Missing Semester.

Conclusion The Missing Semester will be placed before Core Systems.