Developing Highly-Valued Software Engineers

My education efforts are focused on supporting Oregon's economy and our students by training them to design and implement software. This goes beyond teaching technical skills, such as how to create an app. Rather, if we are to substantially promote economic growth and social progress (one of OSU's Signature Areas of Distinction), the university must develop leaders, not followers. This philosophy pertains to university education at every level, from creation of new knowledge (i.e., research) to application of existing knowledge (i.e., development).

Current Course:  CS562: Graduate software project management

Formal graduate education 

CS562 Software Project Management

As I hope for most of my graduate students to obtain leadership roles after graduation (e.g., as tech leads or project managers), I redesigned this course to provide a holistic preparation for leading diverse aspects of software projects. These include guiding product direction, planning the schedule and effort allocations, coordinating merges, managing quality assurance, overseeing integration and deployment, and promoting adoption.

CS561 Software Engineering Methods

I recreated this course to more closely focus on the diverse methods required in agile software development processes, as a means of helping our students become better prepared for future careers in industry. The course included scrum-related methods, selected modeling and architecture-related concepts, and guidance on establishing and evaluating claims in the contexts of professional software development and research.

Master's in Computer Science: Software Innovation Track

I serve as the mentor for graduate students enrolled in this new opportunity to obtain a Master's degree in Computer Science by implementing novel software systems (rather than by doing research). Enrollment is now open.

CS569 Selected Topics in Software Engineering: Mobile and Cloud Development

I created this course as a way to help our graduate students get jobs in this hot new area of software engineering. In addition, running the course enabled me to evaluate various platforms and select those that would be useful for a future undergraduate version of the course (eventually called CS496).

CS569 Selected Topics in Software Engineering: Social aspects of software engineering

I created this special topics course to teach our Computer Science graduate students about how to design tools that enable software engineers to collaboratively create programs. In addition, students obtained assistance in discovering potential thesis topics related to this research area.

CS569 Selected Topics in Software Engineering: Platforms for end-user software engineering

I created this special topics course to teach our Computer Science graduate students about how to design tools that enable end users to create programs. Similar existing tools include Microsoft Excel and Adobe Dreamweaver.

Formal undergraduate education 

CS496 Mobile and Cloud Software Development

I created this course to prepare students for obtaining jobs in an area of software engineering that is rapidly growing in importance. In addition, having a formal course in mobile development serves as a structured complement to the mobile app development clubs that I started.

CS494 Web Development

This course trains students in how to create reliable, high-performance, secure, usable web applications. It goes beyond our department's lower-level web-development courses by providing the skills not only to use existing libraries and frameworks but also to create new content management systems and similar systems from scratch.

CS361 Software Engineering I

I organized this course so students spend the first half of the course using a traditional software engineering process, along with the associated documentation, requirements-elicitation, and specification activities. In the second half, they use a modern process (XP) that includes pair programming, refactoring, and other agile methods.

Informal education 

Data Analysis with Python (Non-credit Seminar Series)

This seminar series trained students in acquring, organizing, cleaning, and analyzing data sets using Python. It covered performing basic statistical tests, web scraping, visualizing data, and supervised machine learning with a range of models and multiple frameworks.

Web Development with Node.js (Non-credit Seminar Series)

This seminar series brought students from a basic knowledge in JavaScript to proficiency with Node.js. It covered the distinctive asynchronous programming model of Node.js, a wide variety of APIs and related languages (e.g., Pug/Jade), and architectural aspects of web development with Node.js.

Building a Software Development Career (Non-credit Seminar Series)

This seminar series helps students accelerate their career development. The three Fall 2017 seminars discussed what employers look for, how to prepare an effective resume, and how to select courses that contribute toward employability. I also gave a colloquium on related research (CS 507: 'Software development, money, and you').

Faculty Sponsor for the Mobile Programming Club

There are jobs in other areas of software engineering, but salaries are currently going up fastest for mobile developers. The best way to learn a technology is actually apply it. Therefore, I helped students launch extracurricular training for developing mobile apps (Android and iOS), and I'm have periodically served as the faculty advisor for the club.

App Hackathon

This competition promotes real-world learning by getting our students to create apps. It has three phases: brainstorm app ideas, implement apps in teams, and compete for prizes. In some years, the Hackathon has fed teams with commercially viable products into the OSU Business Accelerator.

Undergraduates Partnering Toward Innovation Commercialization (UPTIC)

The best way to guarantee our students jobs would be if they could all create jobs for themselves. Thanks to grants from OSU (internal) and NCIIA, we trained computer science students and business students to create startups after they graduate. Teams typically create prototypes as well as business plans, then seek startup capital. Read more about one team here.

Related funding

  • Prizes for the App Challenge Hackathon, Urban Airship 4/14-5/14 (grant: $525, my share: $525)
  • E-teams as vehicles for training students to harvest and commercialize universities' research, National Collegiate Inventors and Innovators Alliance (NCIIA) 4/12-6/14 (grant: $34,340, my share: $34,340)
  • Training undergraduates to harvest and commercialize universities' research, OSU BE Community 1/12-12/12 (grant: $19,760, my share: $19,760)