Walla Walla University
Contributed by Jonathan Duncan, jonathan.duncan@wallawalla.edu
Institutional and Departmental Context
- Location: Walla Walla, Washington, USA
- Student body size: 1,800
- Degree(s) offered:
- B.A. and B.S. in Computer Science
- B.S.E. in Computer Engineering (in the School of Engineering)
- B.S. in Information Systems (jointly offered with the School of Business)
- Department/major name: Computer Science
- Number of contributing faculty: 2.33 FTE (with additional support from Engineering/Mathematics faculty)
- Number of majors annually: 15
Walla Walla University is a Seventh-day Adventist institution of higher education founded in 1892. In the 1940s, the university (then college) became the first institution of higher education in the denomination to establish a school of engineering. This began the tradition of offering STEM majors in the context of a liberal arts education, as is the case with the computer science program.
The Computer Science Department at Walla Walla University grew out of the Physics Department in the 1980s. The program came close to closing in 2008. At that time, we were down to only 6 majors total. University administration reduced our staffing level to 1.33 FTE and planned on closing the program. After some negotiations, we were given some time to recover and reorganization. The department began a period of intense curriculum modernization (which was about 20 years overdue) and started growing again in the early 2010’s. As of Fall 2019, we have reached 50 majors and continue to grow.
Curricular overview
Major program(s)
The Computer Science major consists of a common core of 38 quarter credits and a senior project sequence of 5 credits for both the B.A. and B.S. degrees. While designed to be taken one class a quarter over four years (as a cohort), these classes can be finished in three years by students who transfer to the CS major. Students in both the B.A. and B.S. degrees must take the Major Field Test (MFT) in Computer Science, but no particular score is required to graduate.
Core Computer Science Curriculum:
- Freshman Year
- CPTR 141/142: Fundamentals of Programming I (4,4) – intro to programming in C++ covering CS1 and much of CS2
- CPTR 108: The Art and Practice of Computer Science (3) – intro to the discipline with an overview of career paths in computing, professional ethics, and an introduction to Python
- Sophomore Year
- CPTR 280: Computer Organization and Assembly (3)
- CPTR 245: Software Development (4) – overview of modern test-driven team software development including distributed version control systems, automated testing and building, and continuous integration and deployment
- CPTR 242: Sequential and Parallel Data Structures and Algorithms (4) – the standard data structures course together with an introduction to parallel algorithms
- Junior Year
- CPTR 396: Internship and Career Readiness Seminar (1) – includes service learning and practice for coding interviews
- CPTR 354: Compilers and Languages (4) – an overview of formal languages and parsing followed by an introduction to functional and logical programming paradigms
- CPTR 352: Operating Systems (4)
- Senior Year
- CPTR 450: Software Engineering (3)
- CPTR 454: Design and Analysis of Algorithms (4)
Required Senior Project Sequence:
All CS majors are required to complete a year-long project that must have a client other than the student. Clients are typically from industry, other departments at the university, or community organizations.
- CPTR 496: Senior Project I (1) – project proposal and review of programming patterns
- CPTR 497: Senior Project II (2)
- CPTR 498: Senior Project III (2)
B.A. vs B.S. Degree Requirements:
In addition to the core and senior projects above, the following are required for each degree.
- For the B.A.:
- 8 credits of Computer Science electives (see list below)
- Cognates: MATH 181: Calculus I (4), MATH 215: Data Analysis (4), and MATH 250: Discrete Mathematics (4)
- 12 credits of foreign language (institutional requirement for B.A.)
- a minor in another department (institutional requirement for B.A.)
- For the B.S.:
- 19 credits of Computer Science electives (see list below)
- Cognates: MATH 181, 281, 282: Calculus I, II, and III (4,4,4), MATH 215: Data Analysis (4), and MATH 250: Discrete Mathematics (4), MATH 289: Linear Algebra (3), ENGR 354: Digital Logic (3)
Computer Science Electives:
Each elective is taught once every two years so that all students have at least one opportunity to take them. They are organized into strands of interest for advising purposes only.
- Applied Computer Science (middle digit “1”)
- CPTR 210: Data Communications and Networks (3)
- CPTR 211: Linux and Windows Systems Administration (3)
- Web and Information Management (middle digit “2”)
- CPTR 220: Web Application Development (4)
- CPTR 320: Web Services and Cloud Computing (4)
- CPTR 420: Introduction to Database Systems (4)
- Computational Science and Intelligent Systems (middle digit “3”)
- CPTR 330: Machine Learning for Data Science (4)
- CPTR 430: Artificial Intelligence (4)
- Programming Methods and Tools (middle digit “4”)
- CPTR 241: Advanced Object-Oriented Programming (4)
- CPTR 440: Computer Security (4)
- Theoretical Computer Science (middle digit “5”)
- Architecture and Organization (middle digit “8”)
- CPTR 380: Computer Architecture (4)
- CPTR 480: Programming Embedded and Real Time Systems (4)
Non-major program(s)
Support Courses: Several STEM majors require the CPTR 141: Fundamentals of Programming course as a cognate. It must therefore be accessible to those new to programming and also lay a good foundation for more experienced programmers to go on in the CS curriculum.
Minor: The CS minor is 30 credit hours. Because of prerequisites, it must include CPTR 141/142: Fundamentals of Programming I and II.
Supported Programs: The School of Engineering offers a BSE degree with concentrations in Computer Engineering and Electrical Engineering, among others. These students take roughly 9 CPTR courses (for computer engineers) or 3 CPTR courses (for electricals) in addition to their engineering courses and cognates. Together with the School of Business, we offer a joint degree in Information Systems. IS students take 30 credits of computer science and 48 credits of business.
Co-curricular program(s)
We have a student ACM chapter that is currently focusing on making contributions to an open source project.
Alumni from the nearby Seattle area (it’s 5 hours away) organize and coach students through a 1.5 day hackathon every spring.
Key contributions
There are several aspects of Walla Walla University’s computer science curriculum of which we are particularly proud. They include:
-
The CPTR 141/142 two-quarter introductory sequence has been the focus of intense development over the last several years. We have evolved these courses to use standards-based grading, a locally-hosted browser-based development environment based on the Theia platform, and a mixture of POGIL and pairs programming activities that have been locally developed and/or shamelessly stolen from fellow computer science educators.
- The second feature worth mentioning is our gradual introduction of modern software development tools starting in the introductory sequence and culminating in the sophomore year with a new course in software development. The sequence of introduction is:
- Use of
Git
to distribute and turn in assignments in intro course (CPTR 141) via a provided script (no direct Git
commands)
- Use of
Git
for a group project in second course (CPTR 142), where basic merging is discussed
- Required contribution to an open source project in third course (CPTR 108) on Github
- Full introduction to modern tools (
Git
, linting, continuous integration, etc) in fifth course (CPTR 245)
- A focus on career preparedness and service that is spiraled through our curriculum. Examples include:
- Freshmen are introduced to a variety of career paths, required to construct a plan for how they will become career ready in the next three years, and required to contribute to an open source project, thereby engaging with a community of developers outside of the university).
- Juniors are required to construct a Github repository of their work thus far, investigate and at least pretend to apply for internships, engage in community service in the field of computing, and participate in mock code interviews.
- Seniors must update their Github repository and resume and compute a capstone project for a real world client.
Limitations/challenges
Our curriculum is quite broad given our staffing levels. This presents several challenges:
- We rely on assistance from other departments (mainly Engineering and Mathematics) to ensure that we can cover all of our courses.
- We expect faculty to be able to teach outside of their area of expertise, which increases the prep load substantially.
- We do not have capacity for a non-majors CS0 course
We would like to grow the number of students further but have had challenges connecting with students outside of or traditional feeder schools (denominational secondary schools). While it is important that we stay true to the Christian worldview of the university, we believe that we are well positioned to serve students from outside of our smaller faith community if we can connect with and recruit them.