Working Locally vs. Remotely
Local
Some JMU CS Students do a significant amount of their software development for their courses on stu.
While you can do CS 347 development on stu, you can’t run your code there.
In general we assume you’re developing and running locally.
That being said, it would be good for you to have your developer tools setup to be able to do things for you remotely (like interact with github for example).
Remote (authentication via key-pairs)
Complete Getting Started with Authentication via Key-Pairs, which will:
- offer skip logic in the instructions if you have previously completed CS 261 setup steps
- guide you through creating an SSH key
- instruct you on how to tell your tools (esp. ssh) that it should know about this key and when to use it
- instruct you on how to make stu know this key is legit
- instruct you on how to tell github this key is legit
Files
- Create some directory where you will place all the projects and code for CS 347 this semester. We will refer ot this directory as
343homethroughout our docs.- I recommend placing it in a place that isn’t automagically sync’ed by cloud apps like Box, Dropbox, iCloud, Google Drive, OneDrive, etc. Mine’s at something like
~/dev/347f26(because I may have several semesters of 347 courses, hopefully you won’t 😜)
- I recommend placing it in a place that isn’t automagically sync’ed by cloud apps like Box, Dropbox, iCloud, Google Drive, OneDrive, etc. Mine’s at something like
Windows
PowerShell Execution Policy
We’ll be running some scripts during the semester. Many Windows users are protected by having an Execution Policy that prevents them from running arbitrary code. You shouldn’t run arbitrary code, you’re a CS student now, not “just” an “end user”. You need to run the following command to remove this protection. That’s scary! I’m reluctant to ask you, but it seems necessary. Be careful with pasting into terminals!
In PowerShell, run the following command to ensure you can run scripts in this class:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
Set-ExecutionPolicy (Microsoft.PowerShell.Security) - PowerShell | Microsoft Learn
Git
If you don’t have it already, install git on your computer. I personally benefitted for years from starting out with a bit of GUI to help me out with git as I was improving my command line skills. While the only GUI I can personally recommend is unfortunately not available for Linux, the built-in features of vscode are ok.
Python
You can have many versions of python installed on a computer. They shouldn’t have any conflicts in general, but you will need to know how to:
Installing a specific version of Python
For this semester, given the Status of Python versions despite the fact that v3.12 is installed in the JMU CS labs, we will start out on v3.14.x.
According to the semantic versioning scheme, we don’t care what follows the 14 in 3.14..
- Go to the Python 3.14.x downloads page and download the installer for your OS.
- Note for Windows: when I was testing this, I got the installer msix file and when it was prompting me, I said yes to each of the prompts. You should too!
(Python) Virtual Environments
It’s a good practice to use a python virtual environment or “venv” for each project you work on.
Note: Windows users should probably first change their PowerShell Execution Policy
Consider completing Chapter 12 of The Python Tutorial to learn more, including OS-specific commands for working with the venv module.
In most cases (all of them for this course) I suggest you place the venv in a directory named .venv in the top directory of the project it is for.
Add this .venv directory to your .gitignore if it’s in a git repo.
🎉 New in Fall 2026: we’re using uv and it defaults to using a venv! 🙏
You may wish to learn more about uv. Consider skimming this Python Developer Tooling Handbook (specifically its Getting Started with uv tutorial)

