Paper ID #33024
CS + X: Coordinate Major in Computer Science
Anastasia Kurdia, Tulane University
Anastasia Kurdia is a Senior Professor of Practice of Computer Science at Tulane University. She re-ceived her undergraduate degree in Applied Mathematics from Belarusian State University, and Ph.D. from University of Texas at Dallas. In her dissertation, she developed new algorithms for studying pro-tein geometry. At Tulane Prof. Kurdia teaches a variety of undergraduate computer science courses and also works on issues in computer science education with concentration on effective teaching and active learning, novel pedagogies, learning at scale, teaching with technology, increasing diversity in technical fields.
c
CS + X: Coordinate Major in Computer Science
Anastasia Kurdia [email protected] Department of Computer Science
Tulane University
Abstract
A coordinate major is an additional major aiming to complement the primary one. Compared to a major, it requires less teaching resources; compared to a minor, it provides for more in-depth study. It attracts students from different disciplines and hence organically produces a diverse environment of learners focused on interdisciplinary issues.
Despite these distinct benefits, it is a relatively rare program as far as undergraduate computer science programs are concerned. In this paper I describe the design of a coordinate major in computer science program at Tulane University, discuss implementation details, and provide practical suggestions for implementing such a program in another university.
1
Introduction
Computer science has grown into a discipline that focuses as much on solving problems in related areas as it does on its own research problems. While it is common to see interdisciplinary major programs and concentrations with fixed mainstream application areas (e.g. computational
biology, computational linguistics, digital arts), fewer universities offer rigorous interdisciplinary computing programs without restricting the application area. It is fair to say that the preparation of interdisciplinary specialists has not grown in sync with a demand for them.
The majority of the effort to increase diversity in computing has been in helping the students from underrepresented groups to major in computing disciplines. There are much fewer resources for the underrepresented students of other disciplines who are interested in acquiring computational skills while maintaining their major area of studies.
A coordinate major in computer science can be a part of the solution to these problems.
1.1
Coordinate Major
(which commonly requires completion of 5-6 courses) and a traditional major program (which commonly comprises 14-18 courses). It is an add-on major, implying that the students necessarily need to have a primary major. It is a credential, but not a degree: the student’s degree (e.g.
Bachelor of Science, Bachelor of Arts) is in their primary major area.
Compared to a traditional major, a coordinate major requires less resources from a department implementing it, making it suitable for resource-constrained environments such as universities going through reorganization or mergers, or newly established/expanded departments or programs, or for circumstances when the preference is to stretch the resource to ensure the breadth of preparation, like in some liberal arts institutions. Being a non-degree program, a coordinate major can enjoy a simpler approval process by accrediting bodies or boards of regents and allows greater flexibility in implementing and adjusting its parts. This makes it an ideal format for trying and improving new interdisciplinary programs. Furthermore, it attracts students from different disciplines and hence organically produces a diverse environment of learners focused on interdisciplinary issues.
Compared to a minor or a certificate program, it provides for more in-depth study.
Despite these distinct benefits, it is a relatively rare program as far as undergraduate computer science programs are concerned. In the last nine years, Tulane University has designed and successfully implemented such a program in a newly established computer science department. To the best of my knowledge, this is the first and only coordinate major program in the US university that was implemented ”from scratch”, without a computer science bachelor’s program as the basis.
Tulane University is a US-based private urban selective medium-sized research university that teaches traditional-age residential students on a 14-week semester-based schedule. Most of the program details are context-independent and will generalize to other higher education settings. These details can be helpful in implementing a coordinate major in computer science in another university or serve as a model for building a coordinate major in another computing discipline (such as information technology or data science).
The rest of this paper describes the design of a coordinate major in computer science program, discussing the implementation specifics (Section 2) at Tulane, and providing practical suggestions for implementing such a program (Section 3). Section 4 concludes the paper.
2
CS Coordinate Major at Tulane University
2.1
Program structure
The coordinate major in computer science requires completion of 5 core courses (Introduction to Computer Science I and II, Discrete Mathematics, Introduction to Algorithms, Introduction to Systems and Networking), 3 elective courses complementing the primary major, and a
Figure 1: Program outline. Shaded courses form a required core. Arrows to electives are not drawn, different core courses are prerequisites for different electives.
2.2
Core courses
The goal of the core courses is to develop fundamental knowledge and skills. All core courses have non-credit weekly labs associated with them.
2.2.1 Introduction to Computer Science I
Introduction to Computer Science I (Intro I) course is designed for students with no prior background in computing. It has two central aims. The first aim is to enable the students to develop computational solutions to practical problems:
• Break a computational problem into manageable sub-problems.
• Write an algorithm to solve a specific problem, and then translate that algorithm into a program in a specific programming language (Python).
• Reason about solution’s performance and measure its efficiency.
The second aim is to explore the breadth of Computer Science as a discipline and how it exists in the world:
• Reason how computational tools, and computational thinking, are used to solve problems in a diverse set of application areas.
• Explain the basic theory and organization of a computer system, basic operation of modern software tools (e.g., operating systems, social media tools, embedded operating systems), and limits of computation.
The topics include:
• Fundamentals of programming in Python (variables, flow control statements, functions, files, dictionaries) (4 weeks).
• Binary representation of data and basics of digital logic (2 weeks).
• Elementary algorithmic concepts such as informal big-Oh analysis, searching and sorting algorithms (2 weeks).
• Advanced programming concepts (recursion, OOP) (2 weeks).
• Elementary data structures concepts (arrays and linked list, binary search trees, graphs) (2 weeks).
• Limits of computation (1 week).
These topics cover 13 weeks of the semester, the remaining week is used for on-demand reviews and summaries. The topic of troubleshooting and program testing is spread over the entire semester.
The selection of topics is inspired by Harvey Mudd’s CS For All curriculum1 2; the main difference is in the omission of some computer organization parts (HMMM language and advanced circuits) and addition of data structures/algorithmic concepts.
Class meetings fall into one of the two categories: interactive discussion (”lecture”) that is dedicated to introducing new material, discussions, individual and group activities using slides, board, and handouts; and practical assignment (”lab”) dedicated to problem discussion and to coding on paper and on personal computers. The emphasis is on the concepts that are applicable to programming in most programming languages, not just in Python, and on solving problems from different application areas.
2.2.2 Introduction to Computer Science II
While Intro I covers a wide breadth of topics and a single language (Python), Introduction to Computer Science II (Intro II) is focused on three core themes in the design, analysis, and implementation of computational tools: data structures, software engineering, and programming languages. From the practical perspective, students learn different paradigms of software
performance). The high-level goal of this course is to equip the students with a versatile skill set that will provide a strong foundation for further study in computer science.
This course utilizes several programming languages with the aims of selecting a language most appropriate for illustrating the concept, and getting the students accustomed to the process of learning new languages.
• Object-oriented programming concepts (classes, inheritance, encapsulation,
polymorphism), container abstract data types (array lists, stacks, queues, maps), and unit testing are presented using Java (7 weeks).
• Direct memory manipulation and pointers are presented using C (2 weeks). • A brief introduction of C++ allows for contrasting with Java and C (1 week).
• Main principles of functional programming (higher-order functions, purity, lazy evaluation, recursion) are illustrated using Haskell (2 weeks).
• The class ends with an independent learning module where students have to learn a new language or technology on their own (2 weeks).
2.2.3 Introduction to Operating Systems and Networking
This course unites topics from traditional Operating Systems (OS) and Networks courses. Two-thirds of the course is dedicated to the themes of virtualization (4 weeks), concurrency (2 weeks), and persistence (2 weeks) drawing from Arpaci-Dusseau course3, preceded by general OS issues overview (1 week) and followed by case studies of several contemporary OSes (1 week). The networking part explores classic network solutions (encoding, error detection and correction, addressing, routing, sliding window, reliable transmission) through the study of the Internet hourglass protocol model (4 weeks).
2.2.4 Discrete Mathematics and Algorithms
Discrete Mathematics and Algorithms classes are similar to those of traditional major programs.
2.3
Elective courses
The courses currently offered as electives represent the areas of expertise of the existing faculty and fall into four categories:
• Algorithms and theory (Introduction to Computational Geometry, Computational Geometry, Advanced Algorithms, Computational Complexity, Theory of Computation, Information Theory, Mathematical Foundations of Computer Security, Logic in Computer Science).
• Systems (Computer Networks, Distributed Systems).
• Applied topics (Algorithms for Computational Structural Biology, Computational Biology and Bioinformatics, Software Studio, Data Science, Introduction to Computer Graphics, Information and Scientific Visualization).
While students are not required to take courses within one category, they’re strongly encouraged to do so in order to develop depth in a particular area.
2.4
Capstone project
A culminating experience of undergraduate CS studies is a two-semester capstone course. It gives the students the opportunity to connect their CS knowledge with their expertise in another area by completing a project that demonstrates the application of computer science to that area. It
prepares the students for independent work in industry or graduate school by allowing them to practice productive behaviors (breaking large problems into sub-problems, setting quality metrics and deadlines) in a fail-safe university environment. It also empowers the students with an
experience of independent learning: each student has to select and study the research papers and online tutorials relevant to their particular project (this is likely to be a less structured and more self-driven process than most standard undergraduate courses). Students who successfully complete this course are able to build computational solutions to problems using existing ideas and artifacts in an interdisciplinary domain, to work in a collaborative project setting, and to present the result of their work both orally and in writing. It is largely the capstone project that distinguishes the coordinate major from a minor.
This area of application of student’s studies in computer science is usually this student’s primary major. However, any subject in which a student has completed extensive course work (or obtained equivalent experience) can serve as the area of application. If a student completes a capstone project in their primary major, CS capstone may form an integral part of the student’s primary major capstone, expanding the latter to include a significant component on how computer science can be applied to the primary major project. In other words, the project is required to be
interdisciplinary in nature. Additionally, the developed solution is expected to be relatively novel, where novelty is defined as ”new method on old data”, ”old method on new data”, or ”old
solution in a new context”. A few projects completed in the past include the following: • Mathematics+CS Improved scheduling algorithm for 3D printer4;
• Medicine+CS Software for glaucoma testing using virtual reality goggles;
• Music+CS ”Sound of nature”: Raspberry Pi-based algorithmic music box that generates music from the weather data collected in a particular location;
• Marketing+CS A mobile application that uses machine learning to recommend clothing items in the store that match the outfits pinned by a user;
• Ecology+CS Citizen science mobile application that crowdsources bird sightings and helps researchers in bird sighting analysis.
• Archaeology+CS Virtual reality software for investigation of a historic site. • Arts+CS Preservation through 3D virtualization of art exhibits.
• Dance+CS Machine learning-based choreography generation.
2.5
Complementary learning opportunities
In addition to classroom-based learning, the program relies on complementary learning opportunities.
Undergraduate student organizations and peer learning Department collaborates with two undergraduate student organizations (Computer Science Club, Women in Technology) and a chapter of Upsilon Pi Epsilon (honors society for computing professionals) to co-organize visits of guests speakers, tutorials on new technologies of particular interest to students, panels where students share the experience of finding and succeeding in undergraduate research and
internships, trips to local companies, volunteering in weekend coding camps, computing-related movie nights.
Peer teaching Traditional instructor-led office hours tend to be sparsely attended due to the scheduling conflicts and being perceived by the students as meetings attended only in the event of a problem or a question. Renaming office hours to help sessions, holding them in a large
classroom every afternoon, explicitly encouraging the students to attend even if they don’t have questions, and hiring and training an intentionally diverse group of undergraduate teaching assistants made the help sessions extremely popular.
Independent study and honors thesis These courses provide an opportunity for students of exceptional excellence to study the topic of their interest in depth under the supervision of a faculty advisor.
Service learning Service-learning opportunities exist in several elective courses. In the Software Studio course, students build software-as-a-service using the Agile development approach. As a part of the service-learning module, students develop a website for a local non-profit organization. Another elective, Data Science, introduced a service-learning module to encourage students to apply their data science skills to local issues and to deeply think and engage with where data comes from, why it is collected, and who data-centric systems may affect. Work to add a service-learning section to the capstone project is currently underway. Through
service-learning and civic engagement students apply the skills they learn in the classroom to important problems in our local community.
3
Implementation details and resource requirements
Required student background Intro I course is open to all and has no prerequisites. Discrete Mathematics has one semester of calculus as a prerequisite.
Scheduling As illustrated in Figure1, the theoretical minimum number of semesters required to complete the program is five; in practice, the students typically complete the sequence in 6-7 semesters.
Scaling Every computer science program is dealing with enrollment surge7. It is very
reasonable to expect the coordinate major to be extremely popular among the students, likely more so than a full computer science major, due to immense demand for computational experience on the job market, a smaller number of courses than a full major, a possibility of maintaining students’ chosen major. Less than 3% of admitted students in our university currently graduate with a CS coordinate major while our conservative estimate is that up to 20% of every class year would be interested in pursuing such a program. The flip side is that a smaller number of courses in a coordinate major program make it easier to grow than a major program.
Course transfer Being a rare program means that some classes that transfer or study-abroad students take don’t match our offerings. This is particularly true for the courses created in-hourse (Intro I and II, Systems and Networking). When there is no direct match, transfer coursework might receive one of the following treatments. A standard CS course may replace an in-house course (e.g. Operating Systems may transfer to Systems and Networking). Several standard courses may transfer as one coordinate major course (e.g. a slow-paced intro sequence from another university may transfer as Intro I). A course that doesn’t fall into either category is matched to a specially created transfer coursework course number, allowing the student to get college credit for the course (for instance, a basic computer architecture class (usually taught in the second year) may not count as a high-level elective for a coordinate major nor can it replace any of the core courses, but does count toward college credit requirement).
As a side note, the content of AP computer science or another highschool-level course usually matches at most a third of Intro I, so it doesn’t receive transfer credit toward the coordinate major. When a student possesses significant programming experience, they have an option to place directly into Intro II, skipping Intro I, and take an additional elective course, so that the total number of CS courses remains 10.
3.1
Resource requirements
Textbooks One of the difficulties with implementing this new curriculum was the lack of off-the-shelf materials that could be used as textbooks. If topics of a course are drawn from several classic computer science courses, then several classic textbooks would need to be
employed in such a hybrid course. A straightforward approach would be using several free online learning resources, each covering a portion of a course. For instance, OSTEP book3is used for OS part of Intro to Systems and Networking; Learn you a Haskell8is used for functional
materials from ”Programming in Python 3”, ”Computing Technology for All”, ”Data Structures Essentials” and ”Computer Organization and Design”; Intro II uses ”Programming in Java”, ”Programming in C”, ”Programming in C++” and ”Data Structures Essentials”. As of this writing, the cost of a one-semester subscription for such custom book is 73 USD, and all their offerings are in English, making this option inaccessible for the majority of world students. Hopefully, in the future other publishers will adopt a similar Netflix-like subscription-based model, allowing more affordable access to several textbooks in one semester.
Technology Our experience shows that under certain conditions a computer science department might be able to effectively function without a computer lab. Most of our students own a personal laptop. The library and several shared campus workspaces provide access to public computers. In case of accidental loss of a personal laptop, the department maintains 5 loaner laptops that
students can borrow for several days.
In lecture sessions, computers are not used. In lab sessions, pair programming is used so the total number of needed computers is about half of the number of the students. Assignments in core classes can be completed using online IDEs (e.g. ReplIt11) if installing a local IDE is infeasible
for any reason. More complex tasks can be run on Amazon Web Services. In rare cases of computationally intensive tasks students can use the university’s shared high-performance computing cluster. Additionally, the department maintains a small undergraduate activities fund and pays for computational needs (hosting, compute time) that occasionally arise in student projects.
These options have worked well in our context so far; not owning a laptop has not had a detrimental effect on student’s progress and performance. It’s been great to spare the efforts of purchasing and maintaining computers, and supporting a lab technician. In a setting where the students cannot be expected to own laptops and campus computers are not available, it might be worth considering looking for funding to provide the students with laptops rather than building a lab.
Teaching assistants Advanced undergraduate CS students have been employed as course graders and help session facilitators, and graduate CS students work as lab instructors. Before the computer science doctoral program was established and the first computer science graduate students were admitted, doctoral students from the mathematics department had served as lab instructors.
Teaching capacity and course offerings In the most basic form, the semester-based schedule of courses may look as illustrated in Table 1. As shown on this schedule, 5 instructor load units are employed each semester. If a program size is small, capstone project class might be replaced with one-on-one faculty-student mentoring, reducing the number of organized courses each semester to 4.
Table 1: Minimal schedule of courses
Fall Spring
Intro I Intro II
Discrete Mathematics Systems and Networking Algorithms Elective
Elective Elective Capstone I Capstone II
Table 2: Stable schedule of courses.
Fall Spring
Intro I Intro I Intro I Intro II
Discrete Mathematics Discrete Mathematics Intro II Systems and Networking Algorithms Elective
Elective Elective Elective Elective Elective Elective Capstone I Capstone II
Selecting topics and courses As a non-degree program, the coordinate major has greater flexibility in selecting courses and topics in the courses. Course design process aims to maintain a modular structure and preserve the ability to swap/remove topics if needed for a particular student population. In a less selective environment or a non-residential setting, the first two Intro courses could be converted into three courses, or some topics may be excluded to allow more time to concentrate on remaining topics.
Space and scheduling All CS classes and help sessions have been scheduled in one flat 53-seat classroom with a projector and a whiteboard. It has not been possible to completely avoid the overlap between our required course offerings and those of other departments and ensure that students can take all necessary courses in their both majors. Scheduling CS classes outside of standard class hours might be helpful as a partial solution to this problem.
4
Outcomes
The computer science department and the coordinate major program at Tulane University were established in 2012. The first three students graduated in 2014, then seven students in 2015, fifteen in 2016, fifteen in 2017, twenty-seven in 2018, twenty-three in 2019. After that, the program has reached its stable state of approximately 50 graduates per year (forty eight in 2020).
engineering (9), neuroscience (7), psychology (5), linguistics (5), and public health (5). In total, 33 majors are represented: anthropology, studio arts, Asian studies, biomedical engineering, cell and molecular biology, chemistry, chemical engineering, chemistry, cognitive studies, ecology and evolutionary biology, economics, engineering physics, English, environmental science, finance, french, homeland security studies, application development, jazz studies, legal studies in business, linguistics, management, marketing, mathematics, music, neuroscience, philosophy, physics, political economy, political science, psychology, public health. Twelve students
effectively triple-majored, completing two majors and the coordinate major in computer science. A third of the students (42) have completed a minor, three of those completed two minors. The after-graduation paths have been similarly varied: employment in primary major area, software consulting, software engineering, further studies in computational master’s, computer science or primary major Ph.D. programs, medical school.
4.1
Observations on diversity
Naturally, this program has attracted different students than a typical major program would. First, the students usually not only have no prior background with coding, they often have much less mathematical and analytical preparation compared to a typical CS student (as an implication, math required for the courses needs to be taught in the beginning of those courses). Second, being an additional major, the program attracts more competitive students than the general population of the university. Third, the add-on major is perceived as lower-stakes than a primary major, and the students of all areas are more likely to try it (and many end up sticking with it). Fourth, the students who do not see themselves as computer scientists (in a popular view, software engineers) already identify with their primary major and are more willing to try computer science (and often end up going into software engineering). Fifth, the students in the majors perceived as
non-practical (e.g. humanities and arts) are attracted to the program and persevere at it due to the stronger promise of employment than their primary major provides. This combination of factors has resulted in a uniquely interdisciplinary and diverse cohort of students. The number of female students has been consistently higher than in a typical major program; for instance, in 2020 graduating class a third of the students were women.
4.2
Conclusion
This description of the structure and implementation details of the coordinate major in computer science program can serve as a guide for implementing a general interdisciplinary computer science add-on program at another university. It can also serve as a framework for implementing a specific discipline area add-on program (setting electives to be biology-focused would make this a computational biology add-on program for biology majors, setting electives to be
linguistics-focused would make it computational linguistics, etc.) or a program in another computing area (information technology, data science).
References
[1] Geoff Kuenning Ran Libeskind-Hadas Christine Alvarado, Zachary Dodds. Cs for all. URL https://www.cs.hmc.edu/csforallbook/.
[2] Zachary Dodds, Christine Alvarado, Geoff Kuenning, and Ran Libeskind-Hadas. Breadth-first cs 1 for scientists. SIGCSE Bull., 39(3):23–27, June 2007. ISSN 0097-8418. doi: 10.1145/1269900.1268794. URL http://doi.acm.org/10.1145/1269900.1268794.
[3] Remzi H. Arpaci-Dusseau and Andrea C. Arpaci-Dusseau. Operating Systems: Three Easy Pieces. Arpaci-Dusseau Books, 1.00 edition, August 2018.
[4] Chanyeol Yoo, Sam Lensgraf, Robert Fitch, Lee Clemon, and Ramgopal Mettu. Toward optimal fdm toolpath planning with monte carlo tree search. In Proceedings of the 2016 IEEE International Conference on Robotics and Automation (ICRA), Best Automation Paper Award, pages 4037–4043, 05 2016. doi:
10.1109/ICRA40945.2020.9196945.
[5] Tyler Schlichenmeyer, Mei Wang, Carola Wenk, and J. Brown. Autofocus optimization for tracking tissue surface topography in large-area mosaicking structured illumination microscopy. Frontiers in Optics, FiO 2014, 10 2014. doi: 10.1364/FIO.2014.FM4F.3.
[6] H. Kimbrell D. Tulman-T.S. Schlichenmeyer C. Wenk B. Lee J.Q Brown, M. Wang. High-area-throughput automated gigapixel imaging of whole prostate tumor resection surfaces using structured illumination microscopy. SPIE Photonics West - BIOS, pages 9313–15, 2015.
[7] Computing Research Association. Generation cs: Computer science undergraduate enrollments surge since 2006, 2017. URL https://cra.org/data/Generation-CS/.
[8] Miran Lipovaca. Learn You a Haskell for Great Good!: A Beginner’s Guide. URL http://learnyouahaskell.com/.
[9] Alex Edgcomb, Frank Vahid, and Roman Lysecky. Students learn more with less text that covers the same core topics. In Proceedings of the 2015 IEEE Frontiers in Education Conference (FIE), FIE ’15, pages 1–5, Washington, DC, USA, 2015. IEEE Computer Society. ISBN 978-1-4799-8454-1. doi:
10.1109/FIE.2015.7344322. URL http://dx.doi.org/10.1109/FIE.2015.7344322.
[10] Alex Edgcomb, Frank Vahid, Roman Lysecky, and Susan Lysecky. Getting students to earnestly do reading, studying, and homework in an introductory programming class. In Proceedings of the 2017 ACM SIGCSE Technical Symposium on Computer Science Education, SIGCSE ’17, pages 171–176, New York, NY, USA, 2017. ACM. ISBN 978-1-4503-4698-6. doi: 10.1145/3017680.3017732. URL