Andreas Stefik, Ph.D.

Associate Professor of Computer Science at the University of Nevada, Las Vegas

Teaching

This page is for students looking for more information on my courses. I have taught a wide variety of courses, including Software Engineering, Human-Computer Interaction, Automata Theory, Compiler Theory, Data Structures, Assembly, or a variety of others. My current class is listed below:

CS 472: Software Engineering I

Current techniques in software design presented with emphasis on architecture first development. Introduction to the processes involved in development. Practice architectural design through a series of homework problems. Students work in teams to prepare the architecture for a software product.

Prerequisites: CS 326 and CS 370

Rationale

The purpose of this course is to give students an introduction to developing software in a more realistic setting. In the first semester of the course (CS 472), students gather requirements; creating mockups and prototypes, while in the second (CS 473), they predominately implement and deploy their software. During both courses, students are required to choose and follow standard software engineering processes.

Syllabus

Assignments

Slides

CS 326: Programming Languages, Concepts and Implementation

Design, evaluation and implementation of programming languages. Includes data types and data abstraction, sequence control and procedural abstraction, parameter passing techniques, scope rules, referencing environments and run-time storage management. Study and evaluation of a number of current programming languages.

Prerequisites: CS 302 and either CS 219 or CpE 300. Prerequisites must be completed with a grade of C or better. Advanced Standing Required.

Rationale

The purpose of this course is to give students an introduction to programming languages, which encompasses a series of big ideas. When students leave the course, they should have a better understanding of 1) Compilation, 2) Static Analysis, 3) Dynamic Behavior, 4) Formalism, and 5) the Human Factors Impact of programming languages. Understanding these big ideas gives us better insight into what the box is doing as we write, or run, programs we have written.

Syllabus

Assignments

Slides