Computer Science Track
Though students use cutting-edge software development technologies, the curriculum focuses on the concepts and principles embodied by those technologies that persist over time.
The emphasis of the computer science track at Saint Mary's is on providing students with an education that guides them to be proficient in core computer skills and to be experienced in project-based software development. Students will also acquire software design and architectural skills which will lead to the construction of quality software.
Students who earn a degree in the computer science track will graduate with data analysis skills from multiple perspectives and technologies and an understanding of the scientific, cultural, and political role that technology plays in our global society.
Graduates who possess a degree in the computer science track are prepared for careers in the web development, computer programming, and software engineering industries.
High School Preparation
High school coursework that will support a student in his or her pursuit of degree in the computer science track includes experience in Mathematics, Statistics, and Calculus.
Enhance Your Experience
Computer Science Minor
A scientific computing minor is also available at Saint Mary's, giving students in many majors the chance to explore the field of computer science and to gain career-enhancing skills in programming. The minor complements major areas in business, mathematics, and the sciences.
A. Computer Data Science Core
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. Credit is not granted for this course and CS106.
This course introduces students to the practice of software development. Students learn the fundamentals of programming, algorithm development, and basic design principles.
The laboratory course complements CS110 lectures.
This course is a continuation of CS111. 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.
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.
B. All of the following:
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.
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.
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.
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.
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.
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.
C. One of the following:
This course provides the student an opportunity to complete a large programming project which can either be for an organization or the student's project.
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.