Recommendations and websites to look at to give yourself a summer project
The focus of learning any one computer language is to nail down the basics. Maybe code will look
a little different, but the important things like making a variable, using loops, if statements,
and conditional or relational operators are all fundamentals that every language utilizes.
-
Python (3.6 or higher)
- Python is very beginner friendly, which is why you see such a high adaptation of it in so
many different fields. - Author's Note: Python 2.7 released its final version, so it's worth focusing on 3.6+
- Python is very beginner friendly, which is why you see such a high adaptation of it in so
-
Java
- Java is utilized heavily in our intro level courses, so it may be worth poking around at now
to get ahead of the curve!
- Java is utilized heavily in our intro level courses, so it may be worth poking around at now
-
C / C++
- Super useful for hardware / optimization focus. Utilized in higher level courses
-
Bash / Scripting / Linux
- Linux is an operating system that is wonderful for development (and very useful to your learning
at Wright State).
You can start fidgeting with Linux in a variety of ways:- Raspberry Pi - a computer that only runs Linux. The entire system runs off an SD card, so
if you fidgeting goes awry, you reinstall the SD card and you're off again! - Virtual Machines - VMWare and Virtual Box are programs that let you use "guest" operating
systems. So instead of installing only Linux on your computer, you can keep Windows and run Linux when
you feel like dabbling.
- Raspberry Pi - a computer that only runs Linux. The entire system runs off an SD card, so
- WSL Ubuntu - A full Linux environment built directly into windows 10, allowing you to experiment with Linux and never leave the comfort of your windows operating system
- Terminal - The same basic principle as WSL Ubuntu, but for Mac and Chromebook users.
- If you do feel like installing Linux on your computer, it is fairly easy to set up a 'dual boot' system,
where you can select whether you want to be run Linux or Windows each time you turn on your computer.
Note that this will require a minimum of about 50GB of storage. There are many different versions of Linux
(called distros) available, which can be a bit overwhelming to choose from at first. To get started,
the department recommends one of the following
- Ubuntu: Probably the most common distros available.
- Pros:
- It's extremely popular and well supported.
- Installing software is extremely easy
- Cons:
- It has a reputation for being a bit "bloaty" compared to other distros, though still less so than windows.
- The default desktop layout is a bit unorthodox.
- Pros:
- Linux Mint: An extremely popular distro for people used to the windows look-and-feel,
based on Ubuntu
- Pros:
- Based on Ubuntu, so it benefits from the easy software options, popularity, and support.
- The default desktop layout is virtually identical to windows, so there's virtually no learning curve for casual use.
- Cons:
- Arguably more bloaty than Ubuntu
- There has been issues with some older graphics drivers in the past, though they have mostly been fixed
- Pros:
- ElementaryOS: A beautiful and refined Linux distro, based on Ubuntu and inspired by apple
- Pros:
- Also based on Ubuntu, so the comments about ease of use and support also apply here.
- Is less bloaty than Ubuntu, so it will probably run better on older hardware
- The default desktop layout is very similar to a mac's, so mac users will have an easier time here :)
- It's pretty.
- Cons:
- It's a slightly newer distro, so some of the flexibility that you would get in Ubuntu isn't available yet.
- Software support isn't quite as good as on Ubuntu.
- There are reports of there still being some bugs that need to be worked out
- Pros:
- Ubuntu: Probably the most common distros available.
- Linux is an operating system that is wonderful for development (and very useful to your learning
at Wright State).
-
Git (and GitHub)
- You are creating these wonderful projects, learn how to share them with the world!
- Git is a version control system. It is also a fantastic resume builder.
The great thing about programming is that you can get a lot of practice without buying anything. Take a look at the following websites:
- Repl.it
- Allows free-form coding in literally dozens of programming languages, via a web browser interface
- CodinGame
- Practice programming in a wide variety of popular languages by competing in various game-themed contests.
Sample labs of freshman / sophomore level courses from Spring 2020
- CEG 2170 - C for Engineers
- Elective course for learning C. Geared towards non-CSE students
- CEG 2350 - OS Concepts and Usage
- Required course for CS / CEG majors.
- Provides and introduction to Linux, Git, scripting, OS concepts, virtual machines,
development technologies
These websites have amazing blogs full of project ideas to tackle.
- Raspberry Pi
- Linux, Python, C
- Arduino
- C / C++
- Sparkfun
- Sensors, kits, electronic equipment
- Adafruit
- Adabox subscription service - project kits with resources
- Sensors, kits, electronic equipment
- RobotShop
- Python, C
- HumbleBundle
- Known for deals on games, but they also create e-book collections. They change topics and themes every few week, but usually have at least a couple technology options.
- OverTheWire - Wargames
- We recommend trying out the game "bandit"
- PicoCTF
- Capture-the-Flag games targeted towards high school cyber students, but still a fun introduction to the basics.
When in-person, there are lots of computer labs on campus. A course that requires coding is usually
taught in a lab with computers in it for the students. That said, our FAQs frequently circle back to,
"What computer do I need for this program?" So here are some guidelines.
- Campus IT resources are focused on Windows and Linux systems. Mac users may need to run some course software in a virtual machine. Using a chromebook as your primary system isn't recommended, though it is possible to use one alongside another computer.
- Processor: Four processing cores is a recommended minimum, preferably with eight threads. Most i5 or ryzen 5 processors will meet this requirement, in edition to the recent 3rd gen ryzen 2 processors.
- Storage: Try to get at minimum a 256+ GB SSD (Solid State Drive). Some external storage like a small flash drive for backups and transferring files between your personal computer and lab computers is also recommended.
- Memory: 4GB of RAM is a bare minimum. 8GB+ is recommended
- Graphics: No requirement here. We utilize servers with GPUs and cloud services like AWS for courses
that need access to graphics for learning / computation