Enriching Undergraduate Mathematics Curriculum with Computer Science Courses

— Traditional mathematics curriculum faces several issues nowadays. The gap between course materials and students’ real-life mathematical experiences, the scattering of knowledge in different courses, and the lack of mathematics applications to other subjects all hinder the learning of students. The emerging trends in data science, machine learning, and artificial intelli-gence also impel higher education to enrich and refine mathematics education. In order to better incubate students for future, the experience of enriching undergraduate mathematics curriculum with computer science courses is introduced in this study. The curriculum is designed and implemented for students who major in applied mathematics to better stimulate the learning, participation, exercise, and innovation. It provides students with comprehensive theoretical and practical knowledge for the challenges and industrial requirements nowadays. Evaluations, major findings, and lessons learned from three refined courses are discussed for more insight into the following deployment and refinement of the curriculum.


Introduction
Traditional mathematics curriculum faces several issues nowadays. As stated by Coffland and Xie [1], the gap between course materials and students' real-life mathematical experiences, the scattering of knowledge in different courses, and the lack of mathematics applications to other subjects all hinder the learning of students [2][3] [4]. The emerging trends in data science, machine learning, and artificial intelligence also impel teachers to make corresponding changes in mathematics education [5] [6]. Several experiments and improvements are thus carried out, including integrated curriculum, multidisciplinary programs [7], collaborative learning [8], blended learning [9], and capstone courses [10]. In order to better incubate students for future challenges, curriculum refinement and enrichment in mathematics should be performed [11].
Based on the aforementioned issues for mathematics education, literature reviews and course reviews were performed in the department of applied mathematics in one university to get more insight into the possible curriculum improvements [12]. For

Curriculum design and implementation
The overview of computer science courses enriched and refined in the department of applied mathematics is depicted in Table 1. The courses in freshman year, including "Introduction to Computer Science" and "Computer Programming," are compulsory courses for students to acquire fundamental knowledge and skills in computer science. "Introduction to Computer Science" is the first course of computer science concentration in the department of applied mathematics. The goal of "Introduction to Computer Science" is to give the global view and understanding of fundamental computer science topics, including hardware, software, operating system, programing languages, network, web development, and data analytics. "Computer Programming" is the first programming course for students to learn and gain fundamental capabilities in computational thinking, problem-solving, and coding. The courses in the sophomore year, including "Internet Practice" and "Object-Oriented Programming," are elective courses for students to learn front-end development and advanced programming knowledge and skills. "Internet Practice" provides students with modern web design and implementation skills (e.g., HTML, CSS, Ja-vaScript, jQuery, and so on). The topic of data visualization for high-quality presentation of quantitative information will be emphasized during the course [20]. Students can integrate what they learn in statistics and "Internet Practice" to present and visualize data on websites. Based on the knowledge and skills learned from "Computer Programming," students can enroll for "Object-Oriented Programming" to learn advanced programming skills and gain valuable experience in the design and implementation of complex applications. The accumulated knowledge and programming skills are useful for the learning of advanced courses such as "Data Processing and Analysis" and "Statistical Software for Data Analysis." Finally, the courses in junior year and senior year, including "Data Structure," "Introduction to Mathematical Software," "Data Processing and Analysis," "Statistical Software for Data Analysis," and "Capstone Course," are elective courses for students to gain the knowledge, skills, and experience from mathematics, statistics, and computer science for real-world problems and complex applications. "Data Structure" provides students with advanced Alice, developed by Carnegie Mellon University, is an educational software for teaching computer programming in a 3D environment [21]. Through the 3D environment and the interactive interface provided by Alice, students can learn and practice the concept of programming while creating their animations, stories, or games. Any implementation or changes to Alice programs can be executed and examined through the 3D environment instantly. Thus, students can practice and realize major programming concepts, including objects, methods, properties, flow control, and event control, visually and efficiently. During the learning of Alice, students are expected to do their assignments and group projects with particular programming concepts (e.g., operators and flow control) and export their works as videos and share it over the Internet.
In the second section of the "Computer Programming" course, Python will be introduced for students. In addition to general application development, Python is highly used in numerical computation, signal processing, statistics, symbolic mathematics, and algebra. Python also has lots of useful packages in data science, including machine learning, text mining, image processing, and so on, which are tightly related to the knowledge and application of mathematics. Therefore, Python is more suitable for students in the department of applied mathematics rather than programming languages like C and Java [22]. The materials of Python include variables, data types, flow control, data structures, input and output, functions, and exception handling. Students can acquire fundamental programming knowledge and skills for further programming courses and data science courses, such as "Object-Oriented Programming," "Data Processing and Analysis" and "Statistical Software for Data Analysis." It is expected that the capability of computational thinking, the skills of problemsolving, and the understanding and practice of programming concepts can be developed effectively and efficiently in the refined "Computer Programming" course.

2.2
The design of data processing and analysis course The "Data Processing and Analysis" course helps students to learn and experience every important step of data processing and analysis tasks by the leverage of knowledge and skills in mathematics, statistics, and computer science. Table 3 describes the syllabus of "Data Processing and Analysis" course designed and implemented in the department of applied mathematics.
In the beginning of the course, the steps of data processing and analysis, including problem definition, data collection, data cleaning, data management, data modeling, data analysis, data visualization, and findings presentation, are introduced for students to develop a global picture and an overall understanding. Students can get more insight into the roles of mathematics, statistics, and computer science in data processing and analysis. Open data [23] and big data will also be introduced for students to understand real-world trends, challenges, and problems they will encounter nowadays. After the preliminary introduction, the course introduces each step of data processing and analysis. More specifically, students can learn and experience how to perform data processing and analysis through Python and related data science packages based on the knowledge and skills accumulated in mathematics, statistics, and computer science courses. Important Python packages, including NumPy, Pandas, SciPy, SymPy, and Matplotlib, are also introduced as fundamental tools for students on data science and scientific computation [24]. In addition, open data will be used as major materials for learning and practice throughout the course. Popular formats of open data, including CSV, JSON and XML, and the corresponding manipulations will be introduced for students to perform data collection, data cleaning, data management, data modeling, data analysis, and data visualization tasks [25]. During the course, students are encouraged to do their assignments and group projects based on open data and to innovate based on their interests and creativities. After students are equipped with solid knowledge and skills of data processing and analysis, advanced applications such as network and graph modeling, text mining, and image processing will be introduced. Emerging topics and corresponding frameworks for machine learning can also be introduced. For instance, students can learn and use frameworks like Scikit-Learn, Tensorflow, PyTorch, and Keras for particular machine learning problems based on their interests. It is expected that a thorough understanding of data processing and analysis, the cross-domain capability based on mathematics, statistics, and computer science, and the programming skills for complex data processing and analysis tasks can be developed in the refined "Data Processing and Analysis" course.

2.3
The design of statistical software for data analysis course The goal of "Statistical Software for Data Analysis" course helps students to learn and experience every important step of data processing and analysis using R programming language. R programming language provides efficient facilities for data manipulation, calculation, analysis, and visualization [26]. Both R programming language and Python are popular tools for data processing and analysis tasks. Therefore, it is worthwhile for students in the department of applied mathematics to learn and practice those skills for various data processing and analysis requirements. Based on previous knowledge of mathematics, statistics, and computer science, students can acquire additional capabilities in this course when performing data processing and analysis tasks in the future. Table 4 depicts the syllabus of the "Statistical Software for Data Analysis" course designed and implemented in the department of applied mathematics. Similar to the "Data Processing and Analysis" course, the steps of data processing and analysis are introduced at the beginning for students to develop the overall understanding. Open data will also be introduced and used as course materials for students to learn and experience the data collection, cleaning, management, modeling, analysis, and visualization tasks by R programming language. Students are encouraged to do their assignments and group projects based on open data and to innovate based on their interests and creativities. Exploratory data analysis, descriptive statistics, predictive statistics, and selected topics in machine learning, including clustering, classification, and regression, are introduced for students. Students can also get more insight into the applications of data processing and analysis through case studies on financial mining, text mining, and social network mining [27]. It is expected that the thorough understanding of data processing and analysis, the cross-domain capability based on mathematics, statistics, and computer science, and the skills of R programming for data processing and analysis tasks can be developed in the refined "Statistical Software for Data Analysis" course. The level of agreement to the evaluation statements includes "Strongly Disagree," "Disagree," "Neutral," "Agree," and "Strongly Agree." Thus, score 1 to score 5 are given to the above levels correspondingly. Table 5, Table 6, and Table 7 present the evaluation results of "Computer Programming," "Data Processing and Analysis," and "Statistical Software for Data Analysis" based on refined curricula by the students in the department of applied mathematics, respectively. It was found that all the courses got better scores (4.63, 4.49, and 4.61) than average scores of courses offered by the department of applied mathematics (4.37, 4.37, and 4.38), the college of science and engineering (4.34, 4.34, and 4.34), and the university (4.34, 4.34, and 4.29). It shows that significant improvements are achieved through the curriculum refinement and enrichment. From the perspective of course materials (C4), the average scores of "Computer Programming," "Data Processing and Analysis," and "Statistical Software for Data Analysis" are 4.65, 4.46, and 4.74, respectively. It is confirmed that the corresponding course materials based on the refined curricula are clear, appropriate, and helpful for students in their learning tasks.  From the perspective of course contents (C2), the average scores of "Computer Programming," "Data Processing and Analysis," and "Statistical Software for Data Analysis" are 4.4, 4.25, and 4.58, respectively. In addition, 95%, 88%, 89% of students in three courses agree that the courses were stimulating and interesting. Based on the statistics, it is believed that students can be inspired to learn, participate, exercise, and innovate by the refined and enriched curricula efficiently. Finally, from the perspective of course objectives (C3), all the students in three courses agree that the course objectives were achieved. Thus, according to course evaluations, the deployment of computer science courses based on the refined and enriched curricula brings lots of benefits and positive impacts on the students in the department of applied mathematics.

Major findings
In this section, major findings and lessons learned from the course implementations based on the refined and enriched curriculum are introduced. Several findings and experiences during the courses, including "The Use of Educational Software for Programming," "The Connection between Course Content and Real Life," and "Interdisciplinary Learning," are introduced and discussed. These findings, experiences, and lessons learned provide more insight into further deployment and refinement of the curriculum.

The use of education software for programming
One of the recommendations for current mathematics education is "targeting computational thinking and coding [28]." However, previous programming courses in the department of applied mathematics mainly focused on the syntax of programming languages. The concepts and language constructs are usually instructed separately. In that circumstance, students just memorized the programming languages and cannot accumulate computational thinking and problem-solving skills. Tough and boring course materials could make students lose interest and give up too early [29]. What is even worse is that many students hesitate to study the following computer science courses. Therefore, when designing the "Computer Programming" course, Alice is used in the first section of the course. For students in the department of applied mathematics (or other non-computer science departments), Alice (or other educational software for programming such as Scratch and MIT App Inventor) could be a better choice to inspire the interests of students and teach programming concepts than programming languages like C and Java [30] [31]. Through the 3D environment and the interactive interface provided by Alice, students can learn and practice different programming concepts while creating their animations, stories, and games. Based on the visual presentation of program execution, students can get insight into the effects of programming concepts and language constructs (e.g., if statements and loops) effectively and efficiently. In addition, students show more interests and perform more proactive-ly by using Alice for learning [32]. Innovation and creativity can also be incubated during the class, assignments, and group projects in the course. Figure 1 depicts the racing game and the puzzle game designed and implemented by Alice in the midterm project of the "Computer Programming" course. In the racing game, the player can use keyboard to control the vehicle to pass checkpoints and avoid to hit obstacles. A countdown mechanism and a scoring system are implemented through the corresponding programming concepts and language constructs. In the puzzle game, the player can use keyboard to control the rabbit to explore the whole area and use mouse to interact with objects in the game (e.g., open a refrigerator) to find all the hidden carrots.

Fig. 1. Games designed and implemented by Alice
By reviewing assignments and group projects by students, it is confirmed that important programming concepts, including objects, methods, variables, loops, flow control, and event controls, are exercised and learned effectively and efficiently. In addition, students show great enthusiasm for developing their own animations, stories, and games. Based on accumulated programming concepts and development experience through Alice, students have better performance when learning other programming languages (e.g., Python and Java) and are not afraid of coding for particular tasks in the future [33]. Therefore, for students in the department of applied mathematics (or other non-CS major students), educational software for programming is a better choice to stimulate and inspire the learning, participation, and exercise in the beginning [34]. This also facilitates the development of the capability to realize specific computation or problem solution by programming through computational thinking.

The Connection between Course Content and Real Life
One of the issues about traditional mathematics curricula is the gap between course materials and students' "real-life" mathematical experiences [1] [4]. For instance, based on course reviews, students enrolled in the statistics course usually learned the theoretical knowledge and did limited or simplified practices in textbooks by topics separately. A critical gap exists between theoretical understanding and actual problem in real life. Students have no experience in the leverage of knowledge and skills learned from mathematics, statistics, and computer science, which are essential for research and industry today. Therefore, both in "Data Processing and Analysis" and "Statistical Software for Data Analysis" courses, open data is used as materials for learning and practice [35] in addition to limited or simplified examples in textbooks. Through the introduction of open data in the courses, students can find and use interesting open data for further analysis, application development, and even innovation. Based on statistical theories and programming skills, students can learn and practice how to explore, collect, clean, manage, model, analyze, and visualize actual data from open data portal. The analysis results usually reveal interesting findings which are beneficial to the general public and the society. Thus, students can not only realize the data processing and analysis methods but also get more insight into the applications of statistical theories and programming skills in the real world. Figure 2 present the assignments implemented by Python and R based on government open data. The first one is to process, analyze, and visualize the dengue fever cases reported in major cities in Taiwan by Python, NumPy, Pandas, and Folium in "Data Processing and Analysis" course. In the implementation, users can select a period of time and observe the associated dengue fever cases through the map service. The information of descriptive and predictive analytics of dengue fever cases is also provided. The second one is to collect, process, analyze, and present travel information in Tainan city in Taiwan by R, ggplot2, ggmap, and googleVis in "Statistical Software for Data Analysis" course. Students collect and integrate several travelrelated open data from government open data portal, including accommodation, attractions, and Wi-Fi hotspots, and develop a travel application for travelers. As shown in Figure 2, the location of Wi-Fi hotspots in Tainan city is presented for travelers. Travelers can use the application to plan, navigate, and acquire corresponding travel resources efficiently.

Fig. 2. Data visualization by Python and R
Through the connection between course content and real-life application based on open data, students can realize the global picture of data processing and analysis, and practice major steps in data processing and analysis comprehensively rather than limited or simplified examples in textbooks. In addition, complexities and problems during the processing and analysis tasks, including data cleaning, data munging, en-coding problems, and so on, can help students to develop solid knowledge and skills which are useful for future research and career. It is discovered that students show great enthusiasm for learning and practice due to the use of open data. Students will search and choose open data they are interested in. Innovative applications of data processing and analysis can be found in the assignments and group projects during the courses. According to these positive results, the connection between course content and real-life is successfully established for students. This achieves the development of the capability to solve real or complex problems thoroughly by mathematics, statistics, and computer science knowledge and skills. In the future, more connections can be further identified, designed, and deployed to all the mathematics, statistics, and computer science courses for students.

Interdisciplinary Learning
Another issue about traditional mathematics curricula is the lack of "the connection between mathematics to other subjects as an interdisciplinary approach [3] [36]." In traditional mathematics courses, students usually learn an abundance of mathematical theories and calculations. However, the applications of those theories in different domains are less mentioned. For instance, the graph theory can be used to build recommendation engines in e-commerce or social networks [37]. In addition, the knowledge of matrix and associated manipulations can be applied to image presentation and processing. In order to facilitate the learning, practice, and knowledge accumulation in an interdisciplinary approach, lots of assignments and group projects based on mathematics, statistics, and computer science are designed. Students are encouraged to integrate what they learn in different courses and to innovate based on their interests and creativities. Figure 3 presents the projects built by students during the "Data Processing and Analysis" course. In the first project, students integrated what they learned in frontend development, computer programming, data processing and analysis, statistics, and data visualization methods to build a responsive web page for their travel in Japan. The web page presents the route, the photos, the expense statistics, and the activities in timeline of their travel. The project also got an award in the competition held by college of science and engineering in the university. Based on the feedback from one student, she said it was a wonderful experience to integrate what she learned in the past and develop a great website from scratch. Through the course and the project, she had more confidence and was not afraid of computer-related tasks in the future. In the second project, a student who also enrolled in "Graph Theory" course tried to model and implement a graph coloring algorithm to present the coloring result. Although the student encountered many difficulties, he solved those problems and completed the implementation by searching, learning, and trying numerous online resources and code examples. Based on the feedback from those students, they gained interdisciplinary knowledge, hands-on experience, and problem-solving skills through the projects or assignments. They also got great pleasure and confidence when they completed the tasks. The interdisciplinary learning achieved by the refined and enriched curriculum makes students learn, practice, and accumulate various knowledge and skills in differ-ent disciplines efficiently [38] [39]. Besides, confidence, innovation, and creativities of students can be incubated during the learning activities.

Conclusion
Many universities begin to propose several innovations and refinements in education, including teaching improvement, integrated curriculum, multidisciplinary programs, and capstone courses to better incubate students for future. In this study, the experience of enriching undergraduate mathematics curriculum with computer science courses is introduced. Based on the original focus on mathematical and computation theories, the employment of computer science courses provides students with comprehensive theoretical and practical knowledge for the challenges and industrial requirements nowadays. It is anticipated that students can (1) realize specific computation or problem solution by programming through computational thinking, (2) solve real or complex problems thoroughly by mathematics, statistics, and computer science knowledge and skills, and (3) accumulate cross-domain capabilities, skills, and experiences for emerging challenges. The design and implementation of three computer science courses, including "Computer Programming," "Data Processing and Analysis," and "Statistical Software for Data Analysis," are introduced. Based on the course evaluations from students' perspectives, the deployment of computer science courses and the refined and enriched curriculum bring lots of benefits and positive impacts on the students in the department of applied mathematics. Major findings, course experiences, and lesson learned from the course implementation, including "the use of educational software," "the connection between course content and real life," and "interdisciplinary learning," are found to be highly beneficial to the learning activities. Computational thinking, interdisciplinary knowledge, problem-solving skills, confidence, and creativities of students can be incubated during the courses effectively and efficiently. According to current implementation results, future works include further evaluation and curriculum refinement. More information about the design and implementation of computer science courses can be accumulated and analyzed as time goes on. In addition to the questionnaire designed by the university, several IT systems can be built and leveraged to collect and analyze the learning status of students. Thus, more qualitative and quantitative analysis can be performed to further evaluate and refine the curriculum in the future. Finally, the feasibility of deploying computer science courses to the undergraduate program in other disciplines can also be explored. Through the findings and lessons learnt, a more improved curriculum can be developed to incubate students for a better future.