Discrete Mathematics and Functional Programming (DMFP)
In his first year teaching at Wheaton, Professor VanDrunen noticed a problem: He was teaching an introductory programming course filled with math majors taking it for their computing requirement and a discrete math course with many CS majors taking it for a mathematics requirement. It struck him that these two tasks didn't need to be separate endeavors. He concluded, computer science majors should learn to write proofs and math majors should learn to write programs together.
This led to the design of a novel course, "CSCI 243 Discrete Mathematics and Functional Programming," which intertwines an introduction to writing proofs for the mathematical background to computing with writing computer programs in a mathematical approach.
The link between computer science and math that this course forges has been useful not only to math majors and computer sciences majors; students from any discipline can take it as a two-in-one introduction to proof-based math and computer programming. Professor VanDrunen's development of this course led to a new textbook, Discrete Mathematics and Functional Programming, released August 2012.
When the computer science faculty undertook a thorough revision of the computer science introductory courses in 2006, one problem urging them on was that the introductory programming course was trying to do too much in one semester, and that students still did not have sufficient programming experience to thrive in the mid-level courses. Clearly another semester of programming was needed. But with all the valuable topics vying for attention in computer science curriculum, what combination would provide the best experience for students in their second semester? The course would need to play double-duty: it would need not only to provide a gateway to the mid-level courses for computer science majors, but also to be a terminal experience for non-majors who want a two semesters for a solid background in programming.
The computer science faculty was deliberate in their building of CSCI 245 Programming II. The course, now having run almost every semester since Spring 2007, thoughtfully combines traditional second-semester topics like object-oriented design and data structures; with trendy topics like concurrency; with innovative topics that particularly support Wheaton's curriculum, like C programming and systems. Along the way, students learn both the nuts and bolts of effective programming and the big picture of developing software. Majors and minors alike reflect on Programming II as an important formative experience in the computer science education.
CSCI 335 Software Development is a course that links the classroom knowledge students have obtained in previous semester with a significant project that emulates real-world work. Each semester students work with teams of size 3 to 8 on a semester-long software project. It's exhausting---both for students and the instructor---but it gives them experience and confidence to work on more ambitious projects both in later courses and in industry.
Typical students take it spring semester of their sophomore year (its nickname is "Sophomore Development"), just in time for summer internship opportunities. Many computer science programs include a practicum or project course like this, but Wheaton is unusual in putting students to work on a significant project like this so early in the curriculum.
See Software Development Projects to find out more about recent projects in this course.