The focus of the Computer Science Department is to prepare students to be lifelong learners of and responsible contributors to the dynamic and expanding field of computing. The department contributes to the liberal arts mission of the university by developing ethical and professional leaders who are skilled in the art and craft of software construction and practiced in critical thinking and abstract problem solving.
The department supports one major, Computer Science, and participates in an interdisciplinary minor in Scientific Computing. The Computer Science major follows a 3-1 educational model, three years of intense course work plus one year of supervised project work. The supervised project work may include an internship with regional partners.
The Computer Science major emphasizes the acquisition of software design and development skills through a project-based curriculum. From a platform constructed on fundamental computing concepts and problem-solving skills stressed in the first year of study, the curriculum builds to a senior capstone practicum experience involving the student in the complete lifecycle of software development. The practicum is a year-long endeavor, either of the student’s own design or in conjunction with an ongoing group project. The department strives to engage students with outside partners in the computing industry as well as on-campus partners such as the GeoSpatial Services and the Kabara Institute for Entrepreneurial Studies.
The Computer Science major concentrates on the skills, technologies and practices necessary to become a successful software artisan. Though students use cutting edge software development technologies, the curriculum focuses on the concepts and principles embodied by those technologies that persist over time.
General Department Goals
- Proficiency in core computing skills;
- Project-based software development experience;
- Development of software design and architectural skills leading to the construction of quality software;
- Engagement in the entire lifecycle of the software development process; and
- An understanding of the scientific, cultural, and political role that technology plays in our global society.
Students who have a high school background in computer science are encouraged to apply for credit through advanced standing. Advanced placement information is available from the department chair.
The Computer Science Department also supports and staffs theminor.
Click on courses below for descriptions
This course provides a foundation in computing and algorithmic principles. Students are introduced to the basic conceptual building blocks of computer hardware and software systems. The tools and principles of algorithmic problem solving and systems design are explored. In the second half of the semester, students gain experience with simple programming challenges.
Offered fall semester. Pre-requisite: mathematics competency.
This course provides in-depth coverage of Microsoft Excel and Access in the context of business applications. Excel topics include formulas and functions, charting, large datasets, pivot tables and what-if analysis. Access topics include relational database concepts, database design, basic query construction, and report generation. This course combines online and hands-on learning.
Prerequisite: AC222 for business majors.
This course teaches introductory programming within a problem solving framework applicable to the sciences. The course emphasizes technical programming, introductory data storage techniques, and the processing of scientific data. There is an emphasis on designing and writing correct code using an easy to learn scientific programming language such as Python. Advanced excel spreadsheet concepts will be taught and utilized during the programming process.
Prerequisite: mathematics competency.
This course introduces students to the practice of software development. Students learn the fundamentals of programming, algorithm development, and basic design principles.
Offered spring semester. Prerequisite: CS101; concurrent with CS111.
The laboratory course complements CS110 by using programming exercises to reinforce concepts and practices covered in CS110 lectures.
Offered spring semester. Prerequisite: CS101; concurrent with CS110.
This course is a continuation of CS110/111. CS210 expands on the programming techniques covered in CS1, adding discussion of recursion and data structures such as lists, stacks, queues, balanced trees, graphs and heaps. Specific algorithms that use these structures efficiently and general algorithm techniques and their analysis are also covered. Class lab time is used to reinforce concepts and practices covered in lectures.
Offered fall semester. Prerequisite: grade of C or better in CS110/111.
This course provides the theoretical foundation of modern computer hardware and software. It provides that foundation in the form of mathematical tools and concepts geared toward computer science applications. Topics covered include: logic and set theory; functions and relations; simple algorithm analysis; and an introduction to graph theory.
Offered fall semester. Prerequisite: mathematics competency.
This course exposes students to software development on a mobile platform. Topics include performance and usability issues on hand-held devices, application portability, tools for mobile development and web protocols for mobile programming. After covering the basics of mobile development, the student will build their own mobile application.
Prerequisite: grade of C or better in CS210.
This course covers a wide array of current topics related to social, legal, and ethical issues arising from the pervasive use of current and emerging computer-related technologies. Through discussion and writing, students are expected to thoughtfully explore the covered topics. This course is part of the College’s Intensive Writing Program and satisfies the upper-level writing requirements for computer science majors.
Offered fall semester. Prerequisite: E120 or equivalent.
This third course in the three semester programming sequence emphasizes the principle and practices of software design and testing which result in quality software. Object-oriented design is covered in conjunction with refactoring, unit testing and continuous integration. This class highlights the connection between software design and software reliability. Class lab time is used to introduce new concepts and explore ones described during lecture.
Offered spring semester. Prerequisites: grade of C or better in CS210 and CS220 and concurrently with CS325.
A study of fundamental database management systems. Course topics include: data modeling, database design and structured query language (SQL), transaction management, data integrity and security. Object-relational mapping techniques and technologies will also be covered.
Offered spring semester. Co-requisite: CS325.
A course designed to provide undergraduates students with the basic computational tools and techniques needed for their study in science and mathematics. Students learn by doing projects that solve problems in physical sciences and mathematics using symbolic and compiled languages with visualization. By use of the Sage problem-solving environment and the Python programming language, the students learn programming and numerical analysis in parallel with scientific problem solving. Also offered as M356 and P356.
Prerequisites: CS106, M251, M252, and ST232.
This course introduces students to the design and implementation of web applications. Using n-tier architectures as a starting point, students learn the concepts and practices involved in the development of dynamic and stateful web applications integrated with a database system. Both server-side and client-side web technologies are discussed.
Offered fall semester. Prerequisites: grade of C or better in CS355 and CS325.
This course builds on CS288, while exploring the networking, telephony, location-based services offered by the mobile platform. The application started in CS288 may be continued in this class.
Prerequisite: grade of C or better in CS288.
Designed to permit instruction in specialized fields of computer science, explore new topics and utilize the expertise of the faculty and other resource persons. Topics include (but not limited to): simulation and modeling; cryptography and network security; human factors; and advanced data structures and algorithms.
This course engages students in the design and implementation of practical solutions for socially relevant problems. Students learn, through active involvement with diverse communities and real-world challenges, that cutting-edge computing has the ability to advance the human condition. Students join a project team composed of community outreach organizations, underserved populations, and a team of interdisciplinary faculty. They are expected to apply their computer skills and knowledge, in responsible ways, to new settings and complex problems.
This course introduces the formal study of programming language syntax, data types, and control structures; methods of executing higher-level constructs at run-time; and, data structures and algorithms used in compilation and interpretation. Laboratory work emphasizes acquisition of skill in a variety of programming paradigms.
Offered fall semester. Prerequisite: grade of C grade or better in CS325.
This course provides an introduction to computer hardware organization, systems programming and the hardware/software interface. Students learn the basic combinational and sequential logic components of computer processors along with their functional organization and operation. Students also learn how systems software such as operating systems, assemblers, linkers and loaders interact with hardware to in order to run application programs. Students apply their learning by writing and/or modifying systems code.
Offered spring semester. Prerequisite: grade of C or better in CS325.
This course is required for all Scientific Computing minors. Its purpose is to provide students the opportunity to develop a research project or participate in an ongoing research project under direction of a faculty advisor. The project must combine scientific computing tools and techniques with a substantive scientific or engineering problem. It is also intended to give students experience in experimental design, recordkeeping, and scientific writing. Also offered as M456 and P456.
Prerequisites: consent of both the faculty advisor and the minor supervisor, and CS/M/P 356.
This course is the first semester course of a two semester project experience wherein students apply the principles of design and development learned in earlier courses toward the implementation of a large-scale software system. Working in teams, students explore software life-cycle models, software development methodologies, software revision control, and project management as applied to a real world project.
Offered fall semester. Prerequisites: senior status, department major, and grade of C or better in CS335, CS380, and CS410.
A continuation of CS485.
An opportunity for qualified juniors or seniors to participate in an internship under the guidance and supervision of competent professionals. Credit offered under this course listing involves internships in the computer science field but not directly related to the goals of the senior year practicum experience in software development.
Rob Gordon, M.S.
Computer Science Coordinator
Saint Mary's University of Minnesota
700 Terrace Heights #65
Winona, MN 55987-1399
(800) 635-5987, Ext. 6971