Dr. Mike Wallinga ’01 Computer Science Endorsement Instructor


Ph.D., University of South Dakota
M.A., University of South Dakota
B.A., Northwestern College


Dr. Wallinga holds a Ph.D. in computational science and statistics and a master's degree in computer science from the University of South Dakota. A Northwestern College graduate, he taught computer science at NWC for nearly nine years, during which time he coached two Northwestern teams that competed among the world's top 100 student computer programming teams at the Association for Computer Machinery International Collegiate Programming Contest.

Wallinga has also worked as data programmer and analyst for Interstates Control Systems, Inc. In that capacity, he administered database servers, wrote programming code, designed scorecards and dashboards to effectively present information, and created secure websites for information delivery and collaboration. Prior to returning to teaching, he spent nearly seven years as Northwestern's director of institutional research, a position he continues to hold on a quarter-time basis along with his teaching responsibilities. He received Northwestern's 2018 Faculty/Staff Inspirational Service Award.

Wallinga majored in both computer science and mathematics at Northwestern.

CSC171QR - Computer Science I

(4 credits) (NWCore option under Quantitative Reasoning) This is the first in a two-semester sequence of courses that introduces students to fundamental aspects of the field of computing; focusing on problem-solving, software design concepts and their realization as computer programs. Topics include procedural abstraction, control structures, iteration, data types and their representation. An introduction to a high-level language, for the purpose of gaining mastery of these principles, will be provided in lectures and hands-on laboratory experiences. Prerequisite: ACT math score of 20 or above (SAT 510 or above).

CSC172WI - Computer Science II

(4 credits) (Writing intensive) This course moves students into the domain of software design, introducing principles that are necessary for solving large problems. Here, the classical software design process serves as a basis for treating such topics as abstract data types, specifications, complexity analysis and file organization. Basic data structures and transformations are introduced as representative of the fundamental tools that are used to aid in this process. A high-level language will be used for the purpose of gaining mastery of these principles through lectures and independent hands-on laboratory experiences.Prerequisite: CSC171QR.

CSC291 - Database Management Systems

(4 credits; alternate years, consult department) This course examines database concepts, theory, design and management. Emphasis will be on the relational model. Topics will also include normalization, query languages, database recovery and security aspects. This course will include experience with a relational database system and programming database access into computer applications via a high-level programming language. Prerequisite: CSC171QR.

CSC351 - Data Structures

(4 credits; alternate years, consult department) This course deals with data structures and their algorithms. Emphasis is given to good data abstraction and efficiency. The data structures covered include arrays, linked lists, trees, graphs and strings. Other topics covered may include design patterns, analysis of algorithms, and complexity classes. Programming is done in an object-oriented language. Prerequisite: CSC172WI.

CSC371 - Concurrency and Parallelism

(4 credits; alternate years, consult department) Modern computing architectures utilize multiple processing cores to improve performance by executing multiple commands concurrently. In order to effectively take advantage of this paradigm shift, programmers must adapt their thinking, algorithm design, and coding practices. This class will cover the basic principles of parallel algorithms, the analysis of parallel and sequential algorithm efficiency, testing and debugging techniques, and development tools for parallel programs. Multicore desktop processors, massively parallel GPUs, and cloud computing architectures will be considered. Prerequisite: CSC172WI.

CSC381 - Programming Languages

(4 credits; alternate years, consult department) This course discusses programming languages from a general viewpoint-what are the properties of all successful programming languages? Also discussed are various programming paradigms: iterative programming, object-oriented programming, functional programming, logic programming, concurrent programming, etc. Programming may be done all in one language (emulate other paradigms), in a few select languages (one for each paradigm), or in a large variety of languages.Prerequisites: CSC270 and 351.

Director of Institutional Research, Northwestern College

Database Programmer and Analyst, Harbor Group/Interstates Control Systems Inc., Sioux Center, Iowa

Instructor in Computer Science and Co-Director of Assessment, Northwestern College

Association for Institutional Research

Association for Computing Machinery