Stretch Goals

Stretch Goals#

Every week, I’ll offer some stretch goals in the reading along with challenge problems in the homework. These extras are something to think about, but they won’t be for a grade in this course. My aim is to show you interesting things that are part of the “hidden curriculum”, things that are important for programmers to know but aren’t normally taught in any course. And since we all come in with different background, my hope is that stretch goals and challenge problems will help those with more experience stay interested. But: while these stretch goals are important, they are also optional, and it doesn’t make sense to get behind in your work to work on these ungraded extras. Also: it’s fine to ask CAs for help with this, but please help them prioritize helping students who aren’t yet done with the real work for the week. Remember, these are extras, just to help you learn.

With all that said, we’re just getting started this week, so a good thing to do is to get familiar with your computer. You’ve probably been using your computer for a long time, but programmers are particular intensive computer users with particular needs. So, here are some things to do:

  • Figure out how to get a shell, also known as a terminal. On macOS it’s just called “Terminal”; on Windows, there are three different shells: the CMD prompt, PowerShell, and Windows Subsystem for Linux (WSL). I recommend learning WSL, as it uses the same shell as macOS Terminal. On Linux, it’s called rxvt or gterm or kitty or… if you run Linux, you maybe don’t need this advice.

  • There are many resources for learning the shell. I think Diomidis Spinellis’s free online course, Unix Tools: Data, Software and Production Engineering is the best one.

  • Install Python on your computer. You can do it from the Python website, or you can use a tool like conda to manage your installation—that’s what I use and recommend.

  • Install an interactive development environment (IDE) on your computer. There are many for Python. PyCharm is popular, but I recommend VS Code, which is the most common IDE in popular use for a wide variety of languages.

Once you’ve got all this installed, play around. Take code snippets from the reading, put them in files, find those files in the terminal, and run them using Python. It is normal for things not to immediately work—you may need to set up your PATH variable, or rearrange some preexisting Python installation (it’s already installed in Linux and macOS) out of the way.