> Overview
Overview
Computer Science Department
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
Students develop:
- 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.
Major Offered
The Computer Science Department also supports and staffs the Scientific Computing minor.
Course Descriptions
Click on courses below for descriptions
CS101 Computer Science Fundamentals (3 credits)
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.
CS102 Business Computer Applications (3 credits)
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.
CS106 Introduction to Programming for Sciences (3 credits)
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.
CS111 Computer Science I Laboratory (1 credit)
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.
CS210 Computer Science II: Advanced Programming and Data Structures (4 credits)
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.
CS220 Discrete Mathematics (3 credits)
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.
CS288 Programming the Mobile Device (3 credits)
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.
CS290-299 Special Topics: Programming Languages & Environments (1-3 credits)
Designed to permit the exploration of various languages not used in earlier courses (e.g., JavaScript, XML, C/C++, Perl) as well as to introduce the students to various programming environments and other CS applications (e.g. debugging tools, LaTeX, UNIX). Course offerings are driven by student and faculty interest.
CS301 Computers and Society (3 credits)
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.
CS325 Computer Science III: Software Design and Testing (4 credits)
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.
CS355 Database Management Systems (3 credits)
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.
CS356 Introduction to Scientific Computing (3 credits)
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.
CS380 Web Systems Analysis, Design and Implementation (3 credits)
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.
CS388 Programming the Mobile Device II (3 credits)
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.
CS390-397 Special Topics in Computer Science (1-4 credits)
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.
Prerequisite: CS325.
CS397 Computing for Good (3 credits)
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.
Prerequisite: CS320.
CS400 Programming Paradigms, Theory and Translation (4 credits)
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.
CS415 Systems Software and Hardware Interface (4 credits)
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.
CS456 Scientific Computing Project (1 credit)
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.
CS485 Systems Development Practice I (4-6 credits)
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.
CS496/497 Internship (3 credits)
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.
For more information contact:
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
rgordon@smumn.edu