What upper division undergrad courses for CS?

InTheRye
Thu, 19 Oct 2017 09:54:52 +0000

Hey everyone,

I’ll be entering my final semesters this coming year. I, mostly, have only electives left. I have to take at least 5 courses. There are courses I am interested in from a theoretical standpoint, but because I am an little bit of an older student (I will be 30 at graduation, almost 31) I’d like to do something that makes me marketable at graduation. I plan on going to grad school eventually, but I want to pay off my loans first and get experience in the industry.

I’m interested in Software Engineering, Aerospace, AI, and Gaming. However, my primary concern is employment at graduation. While I’m mostly interested in those careers, it doesn’t mean that I will be discouraged if I do not end up there.

I have close (family and long-term good friends) contacts at Riot Gaming, Google, NASA, Boeing, the FAA, TSA, and a cyber security firm (can’t remember the name off the top of my head). I mention that in case that influences your recommendations since I will likely use these people as future references.

I’ve constructed a list of available courses at my University:

I must take at least one from the following:
Compiler Construction
Description: This course investigates theoretical and practical issues in the design and construction of modern compilers. Topics covered include lexical and syntactic analysis, syntax-directed translation, type checking, intermediate representation, code generation, and runtime systems. A major portion of the course involves implementing a compiler from scratch for a C-like programming language.

Human Factors of Computer Systems
Principles and methods in human factors and ergonomics applied to the design and use of computer systems.

Parallel Programming
This course teaches practical aspects of parallel programming. The covered topics include multi-core processors and shared-memory programming, hardware accelerator programming, and distributed-memory machines and message-passing programming. The students will gain the knowledge and skills needed for developing parallel software by writing programs for a variety of parallel computers.

Software Engineering Project
Students undertake a software development project. They work in teams, developing requirements and designs which they will implement and test.

Computer System Security
Course covers practical aspects of computer system security including managing and producing code for secure systems. Theory, such as cryptography, is introduced as needed.

I must take 4 from the following:
Practical Gaming Design
Course teaches practical aspects of computer game design and implementation. Topics include graphics game engines, game physics, AI methods applied to games, and software architectures for computer games. Students will gain knowledge and skills needed for game development via team projects.

Introduction to Artificial Intelligence
An introduction to the basic concepts of artificial intelligence; search techniques, knowledge representation, problem solving.

Embedded Computer Systems
Description: This course studies the architecture of embedded systems, micro-controllers, their peripherals, languages, and operating systems and the special techniques required to use them.

Internet Software Development
Description: A course providing foundations for the construction and design of static and dynamic Web pages with database applications. This will include server-side and client-side software development.

Theory of Automata
Description: An introduction to automata theory, computability, and formal languages.

Computer Networks
Description: A survey of network architectures and their components. Emphasis will be on media access, network and transport layer protocols.

Introduction to Data Mining
Description: This course covers fundamental concepts and techniques in data mining and information retrieval. Data mining topics include classification, cluster analysis and pattern mining. Information retrieval topics include Boolean retrieval, vector space model, and Web search.

Operating Systems
This course covers the principles of operating systems, algorithms for CPU scheduling, memory management, cooperating sequential processes and device management.

Introduction to Database Systems
Introduction to database concepts, data models, file structures, query languages, database management systems.

Unix Systems Programming
Fundamentals of Unix operating systems, Unix file system and environment, C memory allocation, development tools, processes and signals, threads, device drivers, and programming for security

Software Testing
The concepts used in a formal testing of safety critical and high-quality software applications are investigated. Topics include, but are not limited to, test design, static and dynamic testing tools, and formal testing documentation

Introduction to Graphical User Interfaces
This course covers abstract and practical foundations of graphical user interface design, evaluation, and implementation. It discusses the fundamentals of computer graphics and interactive computer/human interfaces. The course includes a survey of usability measures, the major GUI standards, and GUI tools

Introduction to Recommender Systems
This course covers the basic concepts of recommender systems, including personalization algorithms, evaluation tools, and user experiences. We will discuss how recommender systems are deployed in e-commerce sites, social networks, and many other online systems. Additionally, we will review current research in the field.

Introduction to Green Computing
Reducing energy consumption of mobile devices, cloud computing platforms, and supercomputers is a paramount but daunting problem. This course covers fundamental concepts and techniques in green computing, including a hardware energy efficiency roadmap; energy efficient software design, resource management, and storage solutions; and green data centers and mobile computing.

The ones recommended to me so far are Software Engineering Project, Recommender Systems, Compilers, Parallel Programming, and Software Testing.

I appreciate any advice.

Read full thread