Teaching
An enormous amount of my energy is spent teaching and preparing to teach – an activity that I thoroughly enjoy. Feel free to peruse my Statement of Teaching Philosophy. The courses I am teaching Winter of 2011 are listed below. Students enrolled in my courses can access the syllabus and course materials on the GVSU blackboard site.
I have been creating screencasts and Prezi presentations to help my undergraduate students get up to speed quickly on a variety of technical topics that they need to be familiar with in my courses. These videos are published for everybody’s benefit on YouTube. You can find links to the videos as well as the source code on my Screencast and Prezi Tutorial page. You will find a lot of other programming related screencasts on my YouTube channel.
CS 658 – Web Architectures
Current and emerging web-based technologies, protocols, system architectures, development frameworks, and languages. Offered winter semester.
Prerequisites: CIS 654.
CS 437 – Distributed Computing
Foundations of distributed computing: modern operating systems and computer networks. Comparative discussions of commercially important OSs. Network programming paradigms, network applications, and client/server development. Laboratory exercises in network and client/server programming. (Four credits.)
Prerequisites: CS 333, 337, and CIS major standing.
CS 467 Senior Project
This is our unit’s senior capstone course. We partner with corporate sponsors who supply the description of a software system/application for student teams to design/implement/test over the course of a semester.
Prerequisites: CIS 350, and either CIS 452 or CIS 457, and CIS major standing.
Other courses that I teach include:
CS 357 – Mobile Application Development
Fundamental concepts and technologies underlying mobile application development. Important aspects of developing and deploying conventional mobile applications are covered, such as mobile user interfaces, location-based services, integration with social media and other web-based services. Effective use of mobile analytics and privacy concerns will also be covered.
Prerequisites: CIS 163 and CIS major or minor standing, or EGR major standing.
CS 361 – System Programming
The C programming language is taught in the context of the UNIX operating system. Coverage: functions, variable scope, control structures, pointers, arrays, program organization, structures, standard C library, memory allocation, signals, inter-process communication, and UNIX system calls. UNIX utilities and software development tools are used throughout the course.
Prerequisites: CIS 163 and CIS major or minor standing, or EGR major standing.
CS 656 – Distributed Systems
Fundamental principles of distributed systems: systems and software architectures, virtualization, code migration, threading, RPC, message-oriented middleware, multicast, distributed naming systems, DHT’s, clock synchronization, logical clocks, consistency and replication, overview of distributed web technologies, fault tolerance and security considerations. Exposure to current research topics in distributed systems, and hands-on experience building distributed systems. Offered fall semester.
Prerequisites: CIS 654.
CS 657 – Mobile Application Development
Fundamental concepts and technologies underlying mobile application development. Important aspects of developing and deploying conventional mobile applications are covered, such as mobile user interfaces, location-based services, integration with social media and other web-based services. Effective use of mobile analytics and privacy concerns will also be covered. Offered fall semester.
Prerequisites: CIS 500 and 501.