Let the student use their own laptops. Even buy them one instead of having computers on site that no one uses for coding but only for some multiple choice tests and to browse Facebook.

Teach them 10 finger typing. (Don't be too strict and allow for personal preferences.)

Teach them text navigation and editing shortcuts. They should be able to scroll per page, jump to the beginning or end of the line or jump word by word. (I am not talking vi bindings or emacs magic.) And no, key repeat is an antifeature.

Teach them VCS before their first group assignment. Let's be honest, VCS means git nowadays. Yet teach them git != GitHub.

Teach git through the command line. They are allowed to use a gui once they aren't afraid to resolve a merge conflict or to rebase their feature branch against master. Just committing and pushing is not enough.

Teach them test-driven development ASAP. You can even give them assignments with a codebase of failing tests and their job is to make them pass in the beginning. Later require them to write tests themselves.

Don't teach the language, teach concepts. (No, if else and for loops aren't concepts you god-damn amateur! That's just syntax!)

When teaching object oriented programming, I'd smack you if do inane examples with vehicles, cars, bikes and a Mercedes Benz. Or animal, cat and dog for that matter. (I came from a self-taught imperative background. Those examples obfuscate more than they help.) Also, inheritance is overrated in oop teachings.

Functional programming concepts should be taught earlier as its concepts of avoiding side effects and pure functions can benefit even oop code bases. (Also great way to introduce testing, as pure functions take certain inputs and produce one output.)

Focus on one language in the beginning, it need not be Java, but don't confuse students with Java, Python and Ruby in their first year. (Bonus point if the language supports both oop and functional programming.)

And for the love of gawd: let them have a strictly typed language. Why would you teach with JavaScript!?

Use industry standards. Notepad, atom and eclipse might be open source and free; yet JetBrains community editions still best them.

For grades, don't your dare demand for them to write code on paper. (Pseudocode is fine.)

Don't let your students play compiler in their heads. It's not their job to know exactly what exception will be thrown by your contrived example. That's the compilers job to complain about. Rather teach them how to find solutions to these errors.

Teach them advanced google searches.

Teach them how to write a issue for a library on GitHub and similar sites.

Teach them how to ask a good stackoverflow question :>

  • 2
    I thought the industry standard is vs code. Am I missing something? 🤔
  • 0
    Next year, they actually want us to do BYOD.
  • 3
    Yeah, I’d rather go with Visual Studio Code. It is the best editor right now.
  • 2
    As a second year computer engineering student, this is gold
  • 3
    @primosdace @sunfishcc

    I also should have written: For tools, allow personal preference, yet make a strong point to recommend industry standard software. Also make clear that while the tool decision is up to them, that the code should follow guidelines and be strict about enforcing those.

    (Also, every now and then require a different code style for a project so they learn there is no right and wrong but that *consistency* of the code base is the goal.)

    Make students understand why a "notepad is just fine" attitude might (read: will) hinder them in the long run. Let them get a bloody nose if they insist.

    Autocompletion is your friend, not an enemy and you should be empowered to make larger refactorings without being scared.
  • 2
    That's exactly what the damn system needs to be doing, they always make students focus on the damn exam result and not on knowledge. Even in other fields, and this is just fucked up, wasting time and money at university to just be taught the basics and nonsense.

    They better teach students how to think, and not how to pass an exam.
Add Comment