# CS 115 Redesign

#Before

The first Computer Science class had been taught in a language called Visual Basic since the Edmonds College Computer Science Department was created.

Example project from VB CS 115 - a guess a number game assignment

Programming in Visual Basic requires using Microsoft's Visual Studio editor. It contains a drag-and-drop environment where students can select interface components like buttons and textboxes and place them in a set location on the interface. There are dropdown menus where students can set options for these components (color, size, position, etc.) and they can generate a block where they can place code that they want to run when a component is clicked.

#The Advantages

Example project from VB CS 115 - a program that categorizes  DNA as a potential protein  or not a protein

#The Disadvantages

#Main Changes

The biggest change to CS 115 was a change in language. The language was changed from an old programming language meant for beginners with a required heavy-duty editor to a very popular modern language called Python.

Python is a light-weight (you do not need a fancy computer or any specific operating system to run it), English looking programming language. It is not linked to a particular editor which relieves a lot of stress and discouragement at the beginning of the quarter while students are setting up their software. It is also almost always straight-forward to install and run. For students on ChromeBooks, it can be used with much better performance on the AppStream or there are apps in the Chrome App Store that can install directly on ChromeBooks.

Changing the course language necessitated several other changes in the class. The main change was that Python doesn't have a built-in drag-and-drop graphics ability the way VB does. While it is possible to create GUIs in Python, programmers must write code to do so. This means that it is much better to start with programs that are unrelated to GUIs.

Python animated perspective assignment screenshot

A former full-time colleague, now retired, and I taught the first offerings of CS 115 during autumn quarter 2021. I moved learning how to build GUIs to the last two weeks of the quarter. The reasoning behind this was that I wanted students to be able to see why functions, parameters and returns are important, which is hard to do with event driven programming.

Just because I introduced GUIs late in the quarter doesn't mean students did see any graphical programs before then. I provided them with a library file called DrawingPanel. This provided file allowed them to use a one word long command to open a window. They then could write instructions to draw different shapes on this window. They were able to specify shape locations, sizes and colors. This allowed them to create some interesting programs before they knew how to interact with before learning about all the standard built in components and their properties and placement options.

#Graphics Library

Linda Zuvich, a former tenured faculty member at Edmonds Computer Science who is now retired, created a small library to allow students to create graphical user interfaces (GUIs). The Visual Basic version of 115 was GUI based and the department wanted to keep the class in Python similar to the VB version. Python, unlike VB, doesn't have a drag-and-drop GUI creator integrated with it. Therefore this library made things a bit easier for them by giving them a pared down simple way to create a window and to create and add various inputs (buttons, textboxes, etc.) to it.

an example of using ECGUI

I added a lot of code to this library to allow students to work with even simpler graphical programs. Creating GUIs with many components is pretty tricky, even with this library. Therefore, I added a drawing panel funcitonality to the library. Drawing panel functionality allows students to create a pop-up window with on e simple command and then draw shapes on it in sizes, locations and colors the students specify. The students can write code based on the position of the mouse and code that animates. For example the screenshot above on the lefthand side, is from a project where students created a parallax affect based on the position of the cursor. This drawing panel functionality really opens up the possibility of simple graphics earlier on in the course as no control structures are needed to get an interesting output.

Besides just getting this additional library functionality working, I have implemented it so that it can be used with three different types of syntax so that instructors can pick the one they feel is best for their students. I have placed this updated version, along with some examples of how to use it, like the one to the right, in a GitHub repository that is shared with the other department members who teach CS 115.

-