Mark Haselhoff '12 Professor of Practice in Computer Science; Department Chair
Education:
M.S., Georgia Institute of Technology
B.A., Northwestern College
712-707-7261
mhaselho@nwciowa.edu
VPH 109B
Before joining the computer science department as a full-time professor, Haselhoff taught as an adjunct professor while serving as the college’s web development manager and, previously, on the computing services staff. A Northwestern graduate, he was a member of the college's student computer programming team that competed in the Association for Computing Machinery International Collegiate Programming Contest in China—an event to which only the top 100 college-level teams in the world are invited. He completed a master's degree in computer science at Georgia Institute of Technology in 2017.
CSC120 - Business Data Analysis using Spreadsheets
(2 credits) This course teaches students to use spreadsheets to organize, calculate, analyze, and report on business data. Topics include using built-in statistical, logical, lookup, and financial functions, writing custom formulas and conditional formulas, using built-in data analysis tools, presenting information with charts and graphs, creating PivotTables and PivotCharts, exporting and importing data to and from other applications, sharing data on the World Wide Web, and using macros to automate tasks. The course will culminate by developing key performance indicators (KPIs) and dashboards.
CSC130 - Business Data Management using Databases
(2 credits) The course teaches students to use relational databases to organize, query, analyze, and report on business data. Topics include the relational database model, creating database tables and setting appropriate table options, querying tables to gain insight into data, aggregating and summarizing queries, and creating reports to professionally present and visualize data. Importing and exporting data, sharing data over the Internet, and automating tasks using macros will also be covered.
CSC220 - Web Development
(4 credits; alternate years, consult department) This course will introduce the basics of web development. Various languages will be used to design and develop a front-end web page including HTML, CSS, and JavaScript. This will include a discussion of website accessibility requirements and other legal and ethical considerations. The basics of interacting with a back-end server and database may also be explored. Co-requisite: CSC172WI.
CSC270 - Computer Organization
(4 credits; alternate years, consult department) This course explores architecture and computer design issues in modern computers. Part of the course is spent looking at the basic building blocks used to design and build a computer. The rest of the course deals with how to work with the computer at the level of the central processing unit, main memory and registers. Programming assignments are done in assembly language to see what commands the computer really understands. Corequisite: CSC172WI.
CSC331 - Cybersecurity
(4 credits; alternate years, consult department) This course will introduce the topic of computer security. Topics covered will include user authentication and access control, malicious software, firewalls, intrusion detection, buffer overflows, and website security. The human aspects of security including legal and ethical concerns will also be examined. Prerequisite: CSC172WI.
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.
CSC361 - Networking
(4 credits; alternate years, consult department) This course introduces the student to the field of computer networking. Students will develop an understanding of the general principles of computer communication as they are worked out in an appropriate protocol suite. Specific attention will be paid to principles of architecture, layering, multiplexing, addressing and address mapping, routing and naming. Problems considered include the writing of network software, the physical construction of networks, the Internet and its future development, and network security. 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.
CSC480SR - Computing: Practice and Philosophy
(4 credits) This course will give students a chance to reflect on their experiences at Northwestern as members of the computer science department while prompting them to thoughtfully consider their future careers. Time will be spent considering how past courses have shaped their faith as well as their programming abilities. We will discuss the role of technology as redemptive work and will attempt to articulate when it is and is not a vehicle for positive change. We will also spend time looking at some of the advantages and pitfalls that exist for professionals in the technology sector. Finally, students will be required to complete, either individually or as a team, a large project to add to their portfolios and give them industry-like experience. Prerequisite: CSC172WI and senior class standing.
Lecturer in Computer Science, Northwestern College
Web Developer, Northwestern College
Computer Support Specialist, Northwestern College
Association for Computing Machinery
Northwestern College team member, World Finals of the Association for Computing Machinery (ACM) International Collegiate Programming Contest, Harbin, China, 2010