Computer Science
April 4, 2022 2024-02-26 18:08*The Computer Science program is currently under moratorium and is not presently accepting new students.
The computer science program combines the analysis of computing systems with the art and science of creating computer software. The program emphasizes the development of software solutions and the study of the hardware and software systems that provide the execution environment for those solutions. We firmly believe that the development of software has two distinct components: creation of programs to solve problems and the subsequent translation of those programs into code using an appropriate language.
Students choosing computer science will receive education far beyond the ability to write functional programs. The program is designed to serve as a basis for obtaining employment in industry or as a foundation for graduate studies through required internships and undergraduate research opportunities.
Major Learning Outcomes
Students who graduate with a major in computer science will be able to:
- Apply computer science principles and practices to problems in a variety of disciplines;
- Analyze a problem and identify and define the computing requirements appropriate to its solution;
- Design problem-solving algorithms for problems of varying complexity;
- Articulate and demonstrate the use of software development processes;
- Use current techniques, skills, and common tools for software development;
- Evaluate the tradeoffs involved in algorithm design and implementation choices in software development;
- Utilize a protocol description to develop a program that communicates with another program, either on the same machine or another machine across the network as designated by the protocol description;
- Communicate effectively in groups, with a range of audiences and using a variety of media;
- Work effectively on teams to develop substantial software development projects;
- Critique one’s own work and the work of others to evaluate success of a software development project;
- Analyze and articulate the local and global impact of computing on individuals, organizations, and society;
- Understand and use appropriate ethical and normal business interactions.
Major in Computer Science
A minimum of 35 semester hours is required, including:
Choose either:
CSC 130: Fundamentals of Programming I
CSC 131: Fundamentals of Programming II
or
CSC 143: Programming Foundations
Also required:
CSC 214: Technology and Society
CSC 251: Data Structures
CSC 330: Computer Networking
CSC 344: Programming in C and Assembler Language
CSC 352: Programming Language Study I (Traditional Languages)
CSC 353: Programming Language Study II (Web Languages)
Choose one of the following:
CSC 351: Algorithms
CSC 360: Programming Paradigms
Choose one of the following (CSC 450 strongly preferred):
CSC 450: Internship
CSC 499: Directed Reading
An additional nine semester hours of elective computer science coursework is required to complete the major, of which at least six semester hours must be upper-division coursework.
A minimum grade of “C” is required in each of the non-elective computer science courses. Computer science prerequisite courses must have a minimum grade of “C” to continue to dependent coursework.
Notes:
- CSC 352 and CSC 353 may each be taken twice and applied to the major requirements so long as each study represents a different programming language. At least one credit each of CSC 352 and CSC 353 are required for completion of the major.
- No more than three semester hours of CSC 450 can be applied toward completion of the computer science major requirements.
Minor in Computer Science
A minimum of 20 semester hours is required, including:
Choose either:
CSC 130: Fundamentals of Programming I
CSC 131: Fundamentals of Programming II
or
CSC 143: Programming Foundations
Also required:
CSC 251: Data Structures
Choose two of the following:
CSC 344: Programming in C and Assembler Language
CSC 352: Programming Language Study I (Traditional Languages)
CSC 353: Programming Language Study II (Web Languages)
Six semester hours of upper-division computer science coursework are also required.
CSC 112 – Principles of Computing for Non-CS Majors
Semester: Spring
Semester hours: 3
Offered to non-computer science majors, this course provides a comprehensive introduction to computing for students seeking an overview of the discipline. Students acquire necessary concepts and skills to apply computing principles and resources effectively in their chosen profession. Topics include the history of computing, logical reasoning, problem solving, data representation, and the creation of “digital artifacts” including web pages and computer programs. The course also explores software development methodologies, software as part of a computing system, information technology careers, and ethical, legal, and contemporary social aspects of information technology.
Prerequisite: MAT 100
CSC 130 – Fundamentals of Programming I
Semester: Fall
Semester hours: 4
Students are introduced to the fundamental concepts of computer programming and the practical aspects of composing, testing, proving, and documenting computer programs. Topics covered include development of programmable processes, representation and manipulation of foundation data types, simple input/output processing, and elementary program control structures.
CSC 131 – Fundamentals of Programming II
Semester: Spring
Semester hours: 4
This course builds upon the foundation established in Fundamentals of Programming I with treatments of arrays, exception handling, event models, and elementary GUI frameworks. Students are introduced to basic object-oriented design patterns.
Prerequisite: CSC 130
CSC 143 – Programming Foundations
Semester: Fall
Semester hours: 5
This course, intended for students with significant prior programming experience, provides a foundation in object-oriented programming through an accelerated presentation, including the use of APIs, basic design patterns, and IDEs. Formal models for program development, including flowcharts, requirements models, and state models are introduced. Four hours of lecture and two hours of lab per week.
Prerequisite: permission of the department
CSC 214 – Technology and Society
Semester: Fall
Semester hours: 3
Accelerating development in technology (computer-centric technology, in particular) underlies enormous changes in the acquisition, application, and extension of knowledge and information, impacting virtually every aspect of modern life in ways that are often underappreciated by a generally unaware public. Even those involved in the development of technology are often inconsiderate of the social implications of the technologies they introduce. This course explores technology development from several perspectives. Students consider several past and present visions of the near future as expressed in the writings of several notable (and less notable) futurists, particularly as related to computer-based technologies. Topics include consideration of why we’re not living in the future predicted only several decades ago, what today’s technology futurists are envisioning as our unavoidable future, and how accelerating technological change is impacting every facet of modern life, from the playground to the workplace and from home to school, while technological rifts open across semi-generations. Great potential benefits are balanced against equally impressive opportunities for abuse; society expects that those responsible for the creation and application of technology accept the role of faithful stewards. Therefore this course includes a concurrent exploration of the personal, organizational, and legal decisions encountered in the development and deployment of computer-based technology.
CSC 251 – Data Structures
Semester: Fall
Semester hours: 3
Data structures and their characteristic algorithms are studied, including analysis of performance predictions and “Big-O” characterizations inherent to the various data organizations. Lists, stacks, queues, trees, and elementary graphs are considered. Fundamental sorting algorithms are also treated.
Prerequisite: CSC 131 or CSC 143
CSC 256 – Discrete Structures and Computability
Semester: Offered at discretion of department
Semester hours: 3
The mathematical and theoretical underpinnings of computer science will be explored. Students will be introduced to Boolean algebra and elementary logic and their application to computer implementation and algorithm development. This course explores the historical development of computer science from its roots in mathematical models, including early models of computation, such as Turing machines and other finite state machines.
CSC 258 – Topics in Computer Science
Semester: Offered at discretion of department
Semester hours: 3
This occasional offering will study special areas of computer science not otherwise covered in the curriculum.
Prerequisite: permission of professor
CSC 299 – Directed Reading
Semester: Offered at discretion of department
Semester hours: 1-3
This course allows a student to devise and pursue independent study in an area agreed upon in consultation with, and supervised by, a faculty member. Students should be either a major or minor and have a cumulative GPA of 3.00 or greater.
CSC 313 – Designing User Interaction
Semester: Spring; Alternate years
Semester hours: 3
This course provides an introduction to designing and evaluating user interfaces for a variety of interactive systems, emphasizing the development of interfaces from the user (as opposed to a system-oriented) perspective. The course focuses on using real users to complete the specification, design, evaluation, and testing of a software interface. The course also presents human-computer interaction concepts and theory, which involves computer science, psychology, social behavior, and other human factors associated with computer use. Students will work in teams and participate in thoughtful group critique sessions, experiment design, and usability experiments. This course has significant research, writing, and presentation components.
Prerequisite: sophomore, junior, or senior standing in any major
CSC 326 – Graphics
Semester: Offered at discretion of department; Every third semester
Semester hours: 3
The use of computer technology to create and display information in a visual manner is studied. Topics include display technology, graphic user interfaces (GUI), graphics algorithms, and computer-based imagery. Exercises will involve the use of current graphics software and systems.
Prerequisite: CSC 344
CSC 330 – Computer Networking
Semester: Fall
Semester hours: 3
The organization of computer systems into networks and the theory of computer communication across those networks will be studied. Communications protocols from design to implementation perspectives will be considered with a focus on current technology and software. Students will construct and test software implementations of the technologies as they are discussed.
Prerequisite: CSC 251; CSC 344 is recommended
CSC 333 – Network Programming
Semester: Offered at discretion of department
Semester hours: 3
Network Programming picks up where CSC 330 leaves off. The goal of the course is to provide students with an in-depth look at network application programming and the techniques and tools that are used therein. The student is assumed to have a fundamental knowledge of the protocol-layering model of networking, as well as an understanding of the network, transport, and application layers of the Internet protocol stack. The material for the course focuses on Java’s streams and IP-based protocols. The discussion is extended to include topics such as RMI, servlets, and other components from the Java API.
Prerequisite: CSC 330
CSC 335 – Database Systems
Semester: Offered at discretion of department
Semester hours: 3
This course will introduce the student to the fundamental concepts and implementation of modern database systems, including relational and object-oriented databases. Topics include entity relationship models, transaction processing, concurrency, and query processing.
Prerequisite: CSC 251
CSC 344 – Programming in C and Assembler Language
Semester: Spring
Semester hours: 4
This course introduces two of the most fundamental languages for computer programming: assembler language, the language most closely related to the hardware of the computer, and C, the language most commonly used for operating systems and whose syntax has influenced most modern programming languages. Students will study the representation of data and programs in the processor and memory of modern computers and be led to understand how the basic operations in high-level languages are implemented. Topics will include data structure definition and reference mechanisms and using libraries for I/O and operating system interfaces. This course has a substantial programming component.
Prerequisite: CSC 131 or CSC 143
CSC 351 – Algorithms
Semester: Offered at discretion of department
Semester hours: 3
This course of study extends the study of algorithms that began in CSC 251, focusing on algorithmic paradigms (backtracking, greedy, dynamic programming, branch and bound, etc.) and patterns that have general application in both theoretical and practical computer science. Solutions for classical optimization problems, P and NP characterization, and shortest path algorithms will be considered.
Prerequisite: MAT 110 and CSC 251
CSC 352 – Programming Language Study I (Traditional Languages)
Semester: Fall
Semester hours: 1
This course provides instruction and experience using modern computer programming languages. Students are required to implement basic and intermediate programming tasks in order to explore the syntax, semantics, and dominant paradigm of the topic language. Students cannot apply more than two semester hours of CSC 352 toward completion of the computer science major requirements.
Prerequisite: CSC 251
CSC 353 – Programming Language Study II (Web Languages)
Semester: Fall
Semester hours: 1
This course provides instruction and experience using modern computer programming languages. Students are required to implement basic and intermediate programming tasks in order to explore the syntax, semantics, and dominant paradigm of the topic language. Students cannot apply more than two semester hours of CSC 353 toward completion of the computer science major requirements.
Prerequisite: CSC 251
CSC 357 – Software Engineering: Analysis and Design
Semester: Offered at discretion of department
Semester hours: 3
This course will introduce the student to techniques for performing requirements analysis and design for software projects. Topics include requirements gathering techniques, prototyping, modeling, use cases, risk analysis, functional and non-functional requirements, and software development processes including user-centered design methodology, spiral model, and iterative design.
Prerequisite: CSC 251
CSC 360 – Programming Paradigms
Semester: Fall
Semester hours: 3
The history, development, and evolution of programming languages are studied in this course, which deals with the programming paradigms utilized by modern languages. Experience with alternative paradigms is gained through programming exercises. Related topics covered in this course include regular expressions, interpreters and compilers, and tools for language processing.
Prerequisite: CSC 131, CSC 143, or CSC 251
CSC 410 – Operating Systems
Semester: Offered at discretion of department
Semester hours: 3
This course will introduce the student to the principles, mechanisms, and algorithms underlying modern operating systems. Topics will include management of memory, I/O and processor resources, elementary queuing theory, and inter-process communication.
Prerequisite: CSC 344
CSC 430 – Advanced Networking and Security
Semester: Offered at discretion of department
Semester hours: 3
Participants will explore the techniques and study issues relevant to maintaining and securing computers in a modern networked environment. The course will focus on techniques and methods used to compromise networked computer systems and the methods that are used to counter these attacks. Topics covered will include human and automated intrusion, viruses, and social engineering.
Prerequisite: CSC 330
CSC 433 – Compiler Construction
Semester: Offered at discretion of department
Semester hours: 4
This course considers algorithms and data structures used in translation of high-level languages to executable machine language. Topics include general organization, lexicographic analysis, management of name spaces and storage, error detection and recovery, code generation, and optimization. This course requires significant programming. Evaluation is heavily dependent upon the successful development of substantial portions of a compiler. Students should expect to spend a minimum of 10 hours weekly on this course.
Prerequisite: CSC 344, CSC 360; senior standing is recommended
CSC 450 – Internship
Semester: Fall, Spring, and Summer
Semester hours: 1-12
This course is a guided work experience in an already established place of business. The student must arrange the internship in agreement with the instructor and the Office of Career Services. The internship should relate to the student’s major or minor area of study. A maximum of three semester hours will be counted toward a computer science major. Contract is required. Pass/no pass grading.
Prerequisite: junior or senior standing or permission of the department
CSC 490 – Computer Science Research Seminar
Semester: Offered at discretion of department
Semester hours: 1-3
Students participate in ongoing research and development projects. Areas of focus vary as projects are undertaken and evolve. Participants are expected to be active contributors to research and development teams operating under the guidance of faculty sponsors, and students are required to make both formal and informal presentations based on team progress and participate in critical project reviews. Students should expect to contribute at least nine hours each week toward team efforts.
Prerequisite: junior standing (Note: CSC 490 is required to fulfill the requirements of the major in computer science; CSC 490 may be taken a second time to fulfill an upper-division elective in the major.)
CSC 499 – Directed Reading
Semester: Offered at discretion of department
Semester hours: 1-3
This course allows a student to devise and pursue independent study in an area agreed upon in consultation with, and supervised by, a faculty member. Students should be either a major or minor and have a cumulative GPA of 3.00 or greater.
Prerequisite: junior or senior standing
Contact
Office of Student Records
Rocky Mountain College
Prescott Hall
1511 Poly Drive
Billings, MT 59102