Skip to content

Latest commit

 

History

History

curriculum

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

Information and Instructions

Organization

  • Each subheading (e.g. "Bash/The Shell") is meant to be done on its own. You don't need to come and get opinions on each of the bullets as you do them, unless you wanna.
  • They are intended to be contingent, though; the later ones build on the earlier ones.
    • Because of this, it's important that you do them consistently. Don't start one of these units if you're going to take a week-long break from it; if you do that, you'll forget so much that you'll end up getting frustrated/having to start over.
  • Some of the bullets involve explaining/defining terms/other non-practical activities. Feel free to write down notes for these and explain 'em all at once. I don't need to see the notes; the verbal explanations are what I'm concerned with.
  • Extra Credit: the sections marked XC are above and beyond the excercises. They usually require learning at least two things not practiced/relating at least two concepts not covered. Some of them are just a bit beyond a given excercises, some of them (that look deceptively simple) are quite a bit farther. You should give them each a 15min stab, but there's no shame in throwing up your hands on these. A lot of seasoned devs wouldn't know where to start, either.

Prep Work and Strategies

  • You won't know most of the terms used in this writeup. That's intentional, and is part of the required study.
  • A hint, which will become obvious as time goes on, is that the less code you set yourself up to write, the easier each of these will be. Do your best to use existing tools. A whole lot of these do not require any code at all, and while you can write things from scratch that satisfy an assignment, you may be able to find a ready-made tool that already does what you need, without even the need to import a library.
  • Above all, remember that the internet is your practicum. There's no study guide or textbook to go with these. You're supposed to flail, google, flail, feel silly for missing something, google some more, flail some more, and finally get it. This is not a class; it's more of a structure and series of mile-markers for self-directed study.

Completion

  • Completing one of these excercises has two parts: demonstrating that your solution works, and walking me through how it works.
    • The first part will usually be done totally separately from (and before) the second. Hold me to that if I start mixing them.
    • For code, showing me how something works is a guided tour of what you wrote. For non-code things, this will usually involve doing a given process from scratch and re-creating the excercise.
    • That means I'll ask you to do things that took hours/days to put together again, from scratch, while I watch. This means that taking notes is a really good idea.
  • I'm not a teacher. Whether you complete these or not doesn't affect any grade or secret score. Some of them are easier than others, but there's never any shame in asking for help.

Asking for Help

  • If you can't complete an excercise on your own, that is fine. Come to me, or one of your nerdy/programmer colleagues for help.
    • Before throwing up your hands and seeking help from real live humans, remember the following:
      • These excercises are supposed to ask you to do totally unfamiliar things--things unlike anything you've ever tried.
      • There's no expected time you should spend per excercise or sub-part. Some bullets will take 5 minutes. Some will take hours or days. Just because you feel stuck doesn't mean that you're doing it wrong. I wrote a lot of these in a kind of silly, cryptic way specifically so that you would get stuck (hung up on a term, write misleading google queries, etc.), and have to enhance your research process to get over that wall, as it were. Sadistic? Absolutely. Helpful? Hell yes.
    • If you do come to me (or anyone) for help, do the following:
      • Make a (preferably written out, even in shorthand) list of what you've tried. It should include both things you've researched, and blind stab attempts you've made of trying things without any google help. If you haven't done at least one of either, don't seek help until you have.
      • Make a summary of the specific problem. Don't start with "I'm trying to make a script that..."; instead explain the specific function that you're trying to use that isn't working, for example.
    • Some notes on coming to me specifically for help:
      • I'll help/be available for questions/consultation, but I'd much rather you use google first.
      • This is mostly because I am not that experienced, and only know one way to do most of these, and the goal here is for you to learn software engineering in general; not to learn software engineering "the Zac way".
      • For most of these, I do not know specifics. There is not one combination of button presses or code that I am looking for. The goal is to make things that work, however you can, and be able to explain how/why they work. I might prompt you to remove some dead code or skip some unnecessary mouse clicks, but that in no way affects the validity of your solution. This is engineering, not academia.
      • That said, I will probably argue with you when you show me something that's not the way I would have done it/uses a technique I don't know. This is just how I learn new things. Sorry in advance if I'm a prat.