Last edited: Wed Mar 15 01:14:49 2017

What Makes a Computer Science degree?

I received a Bachelors of Science in Computer Science from Wright State University. Here I give some detail about each course I took. Note, I could count the number of lectures I’ve missed on my hands.

Required Courses

Courses I took for the computer science department.

CS 1180 Computer Science I

I did not take this course. I had credit from the AP Computer Science exam I took in high school. I do not know exactly what is taught in it but I can guess.

The course is an introductory programming course using java. Control structure {if, switch, while, for}, types, type literals (I helped someone with this once),classes, enums (I heard they are not fully explained), and ? (though I don’t know if ternary ? is covered). Swing apparently was introduced when I started but they switched to JavaFX.

I am really glad I did not need to take this course. I am fairly sure I would have learned nothing given what I had taught myself from the internet. In fact…

CS 1181 Computer Science II

The course after 1180. I learned nothing. Some of the content was still overlap from AP CS (Recursion) and other content (understanding how linked and array lists work, using queues and stacks) I had already studied myself. I’m not sure if inheritance was first introduced here or before. A few of the labs/projects required using existing code and project design. One of them was poorly designed enough that I had to annotate my code @Depricated that interfaced with code that couldn’t be change. It was only even like 30 loc that were provided but it was just the wrong way of doing it. My instructor retired so I do not know if that assignment still exists. My memories of the class aren’t helped by the instructor’s quizzes being “What was the implementation of ___ in chapter X.x?” followed by a list of valid implementations, including those mentioned in other sections (knowledge of the book was needed, not the concepts). Positive note: the course taught how to actually profile java (using netbeans).

New things this course made me do: Draw out node chains.

MTH 2570 Discrete Math

Basic predicate logic/boolean algebra. Basic graph theory and combinatorics. Proof by induction.

CS 1000 Technology in Society

I TAed for this course. I should be able to explain it. Maybe later. It is taken as an elective (satisfying core requirements) by non CS students

Ethics, Intellectual Property, global implications, ect.

CEG 2350 Operating Systems Concepts and Usage

The “If you’re going to do programing, you’re expected to just know this stuff” course. Also “How to google” and “Look! StackOverflow can be wrong”.

Introduction to linux, bash, ssh, virtual machines, python, git, sockets. History of things. Lecturing straight off wikipedia. Introduce concepts like blocking, scheduling, context switching, and stuff.

I already knew most of the stuff but I had a good instructor and friends and had a good time there.

CEG 3310 Computer Organization

Basic computer architecture, gates, binary, hex, asm, basic reverse engineering, simple processor, cache. Assembly is the lowest level that I care for.

MTH 2310 Calculus II

Calc 2 is calc 2. More ways to integrate. Series and sequences. Useful for proofs of complexity or advanced theoretical courses I guess but it doesn’t really do much for undergrad CS students. Don’t think that BA in CS requires it.

CS 3100 Data Structures and algorithms

Intro c++, array/linked lists, hashing, graphs, complexity.

EGR 3350 Technical Communication

ya best be able to speak n’ write yer hear

ISE 2210 Statistics for Engineers

A math department stats class was also an option. Basic probability, hypotheses testing. I learned more from AP Stats but the credit didn’t meet the requirement.

MTH 2530 Linear Algebra

Matrix math. Eigen values are a thing. Was also a prereq for Computer Graphics and Cryptography.

CS 3180 Comparative Languages

Introduction to functional programing. Projects done in both Racket (Scheme (lisp)) and python. Programing language history and theory. Overview of different paradigms and motivation behind notable languages. Finite state machines. Parsing language grammars. BNF. Implement a basic interpreter.

CEG 4110 Software Engineering

I had a poor professor but the next semester I sat in on a few of the lectures of another professor.

Software Development Life Cycle, waterfall, cohesion and coupling, cyclomatic complexity, flow charts.

CEG 4350 Operating System Internals and Design

Processes, threads, IPC (pipes, message queue, network), mutexes and locks, semaphores, scheduling, dead lock detection.

CEG 498[01] Team Projects / Senior Design

Work on a team of 4 to write a project proposal, requirements, and specification documents and engineering lectures here and there. Then go build it.

CS 2210 Logic for Computer Scientists

Datalog, propositional logic, ….

CS Electives

2 3000 level and 4 4000 level were required.

CEG 3120 Design of Information Technology Systems

“Advanced” java topics and build something as a class. The class was given the general topic of a database browser. Students were in charge of brainstorming features and writing user stories. The class was divided into teams of ~5. Each team was in charge of picking a sub system from desired features to work on. One day a week was lecture and the other was group and class meetings. Each week groups were responsible for making milestones and reporting on the past week’s progress. Each commit was associated with an issue. https://github.com/rsanchez-wsu/sp16-ceg3120/ Course tools: git, github (issues, wiki), slack (chat), jenkins (continuous integration), eclipse, maven, ant. Course topics: swing, jdbc, java beans, xml, rmi, networking.

CS 3250 Computational Data Analysis

Intro data science with r. Data cleaning, graphs, visualization, regression, modeling, clustering, supervised vs unsupervised learning, ect. Learn something from your data.

My final project https://github.com/joshuastevenson/cs3250-data-project/tree/gh-pages (with left overs from the dcjs demo website) where I analyzed data from speedrun.com.

CS 4290 (MTH [46]\d\d\d) Cryptography and Data Security

Applied abstract algebra. Basic ciphers, fields and rings, rsa. Only programing was for extra credit. I fully expect to never use anything I learned from the class. I know not to roll my own crypto.

CEG 4420 Host Computer Security

Understanding access control, viruses, rootkits, …

Wrote a kernel driver. That was cool.

CEG 4500 Computer Graphics

OpenGl and rendering theory including math.

CS 4700 Database Management

Relational algebra, SQL, ER, hashing,

CEG 4424 Security Attacks and Defenses

Thinking about securing full systems. Risk management. Overview of topics.

CS 4710 Intro Data Mining

Classifying, weka, appori, …

Non CS Required Courses

Taken to fulfill some other requirement.

CST 2310 [Honors] Non Western Literature

Referred to as Post Colonial Literature by the instructor.

PHY 2410 Physics II

Digital circuits are already too low level for me to care. Electro magnetism, capacitor and inductor circuits, optics.

SAA 4100

1 credit class required to be considered as an RA.

UH 2020-01 [Honors] Political Leadership in America

Had it during Trump primaries. :( Text: “Where have all the Leaders Gone”

HST 1200 [Honors] West and World Since 1500

Want to hear me talk about coffee houses in England in the ~18th century?

UH 4000-04 [Honors] Computers, Paradigms, and People

Was cross listed as CS 4000 which was required for CS but now just CS 1000 is.

UH 2010-02 [Honors] 21st Century Games and Play

Ludology, history, culture. Review and analyze games. Main texts: Portal and Stardew Valley.

High School AP classes

I started with 33 credits from tests. The only test I did not get credit for was German. A decent amount of requirements were satisfied including several prereqs. I had 5 AP classes my junior and senior year each for a total of 11 tests.

AP Computer Science

Basically 1180 and some of 1181. Did me a lot of good to skip 1180. 4 credits.

AP Calculus AB

Skipped Calc 1. 4 credits.

AP Statistics

Didn’t count for anything required. Wished I took Calc BC to get Calc 2 credit. I did learn more from it than the stats course I did take though so I was better prepared for data science.

AP Physics C:Mechanics and AP Chemistry

5 credits each! A CS requirement is to have 2 sciences and a second level of one of the sciences. I chose physics 2.

AP Micro Economics, AP Macro Economics, and AP Psychology

3 credits each but only one course was required. Joel Spolsky recommends every developer takes econ.

AP Literature and Composition and AP Language and Composition

I got 3 required credits from one of them.

AP German Language and Culture

Class was not prepared for the exam format. I did not get credit. Deutsch macht Spass. Frag mich nicht etwa ubersetzen bitte.

Stuff I never took

CS/CEG

Digital Circuit design. Doesn’t really interest me. Required for CEG.

Math

Calc 3, Differential Equations. Part of me is sad. Part of me is very, very glad.

Credits required to get a math BS: 33

Other

Would have been nice to do music and German things but eh.