Computer Science (CMSC)

CMSC 105 -  Introduction to Programming with Python  (3)  
Prerequisites: ENGL 70 or ENGL 75 or (ESOL 72 and ESOL 73) or ESOL 100 OR Co-requisite: ENGL 75 or ESOL 100  
(formerly CMIS 105)  

Introduces programming and is aimed at students with no prior programming knowledge or skills. Covers basics of programming including variables, decision-making statements, and iterative statements. Students create logical solutions to novel problems using tools such as pseudocode and flowchart. Students write, test, and run elementary programs to solve problems using a high-level programming language.

CMSC 130 -  Programming Fundamentals  (4)  
Prerequisite or Co-requisite: MATH 145 or MATH 145S  

Introduces professional-level programming techniques, designed for individuals seeking foundational knowledge in programming or aspiring to enter the field of software development. Covers the fundamentals of how to write complete computer programs of moderate size and rooted in real-world problems, using basic data types, functions, loops, if-else statements, and objects. Students will learn top-down design, functional decomposition, mathematical and reasoning skills needed for computer science, software testing, and pair programming. Requires no previous programming experience.

CMSC 131 -  Programming Methods and Object Design  (4)  
Prerequisite: Grade of C or better in CMSC 130 or CMIS 106  

Prepares students to employ the principles of object-oriented programming (abstraction, encapsulation, polymorphism, and composition) in the construction of substantial programs rooted in real-world problems. Students will formulate objects (classes) to model entities in problem spaces; construct programs using the powerful technique of recursion; test code by the professional technique of unit testing; and discuss technical solutions in the context of pair programming and code reviews.

CMSC 230 -  Data Structures and Algorithms  (4)  
Prerequisite: Grade of C or better in CMSC 131  

Introduces the fundamentals of data structures and algorithms in the context of a large, real-world project. Focuses on linked allocation structures: trees, linked lists, and stacks, and the application and mathematical analysis thereof. Structured around a semester-long project in which students iteratively design, develop, and test a significant software project built around real-world needs.

CMSC 285 -  Programming Capstone Project  (4)  
Prerequisite: Grade of C or better in CMSC 230 or CMIS 201  

Design and implement a group project focused on a relatable, real-world problem. Develop a large piece of software 'from scratch' applying techniques taught in the course and learned in predecessor courses. Collaborate in a team setting of iterative (agile) development. This course will strongly prepare students for success in team-based work in both four-year education and industry.