Indiana University of Pennsylvania-Main Campus · Courses
CMSC
41 courses with the subject CMSC, each shown exactly as we captured it from the college's catalog, with every element we hold. Where the wording looks broken, that is our reading of the catalog, not the college's text.
None Restriction: none Description: Introduces the development of algorithmic solutions to a variety of problems and the development of computer programs to implement the solutions. Explores standard programming structures used to introduce fundamental algorithmic/programming concepts including variables, assignments, conditionals, loops, functions, and arrays and their role in problems solving. Emphasizes structured programming in the development of algorithm solutions to common problems. Object-oriented paradigm is introduced at a basic level.
CMSC 108 or CMSC 110 Description: An in-depth introduction to the Object-Oriented Programming (OOP) paradigm, including encapsulation, inheritance, and polymorphism. Focuses on designing, implementing, and using objects. Includes an introduction to Graphical User Interface (GUI) design and programming.
None Restriction: None Description: Introduces the fundamental theory and concepts for cybersecurity including security principles, ethical and professional issues in cybersecurity, attack strategies, risk management, access control, integrity management, cryptography basics, security protocols, and strategies for defending computers and networks. Includes practical hands-on learning activities to enhance understanding and to apply the theory and concepts.
CMSC 110 Description: Introduces the use of mainframe computers in the development of enterprise computing applications. Includes mainframe programming language such as COBOL, program design using top-down techniques, program and project documentation, sequential and random file algorithms, integrated file systems, and features of enterprise computing such as data transfer formats.
none Description: Provides a high-level overview of transformer-based large language models, covering core concepts such as tokenization, embeddings, self-attention, and training. Explores practical skills in prompt engineering, context management, understanding model limitations, tool use, and agentic AI workflows. Applies these concepts within an AI-assisted software development context, emphasizing requirements planning, code generation and review, testing strategies, and best practices for secure and responsible professional use of AI tools.
As appropriate to course content Description: Offered on an experimental or temporary basis to explore topics not included in the established curriculum. A given topic may be offered under any special topic identity no more than three times. Special topics numbered 281 are offered primarily for lower-level undergraduate students.
CMSC 300Computer Organization and Assembly Language3
CMSC 110 or equivalent Description: A discussion of the basic computer architecture elements: gates, combinational and sequential logic, hardware arithmetic, CPU, and memory structure. An examination of the languages of machines: representation of data, addressing techniques, symbolic coding, assembly, and linking. Problem solving using assembly language.
CMSC 210 Description: Fundamental concepts of data design and implementation, data abstraction, data structures, arrays, linked-lists, stacks, queues, recursion, trees, graphs, and hashing. Also covers sorting algorithms, divide and conquer techniques, greedy methods, and analysis of algorithms. The object-oriented paradigm is employed using an object-oriented language.
CMSC 310 with a C or better. Or instructor permission Description: Software engineering concepts include the collection of tools, procedures, methodologies, and accumulated knowledge about the development and maintenance of software-based systems. Strongly suggested for any student planning to take an internship in computer science. After an overview of the phases of the software life cycle, current methodologies, tools, and techniques being applied to each phase are discussed in depth with localized exercises given to reinforce learning of concepts.
none Description: Introduces fundamental concepts, algorithms, and practical applications of machine learning. Explores probabilistic modeling, underfitting, overfitting, regularization, and generalization, regression, classification tasks, and methods such as support vector machines, gradient descent, backpropagation, and neural networks, including a variety of neural network architectures. Covers recent advances in deep learning. Provides practical experience in implementing AI and ML algorithms using popular libraries.
CMSC 341Introduction to Database Management Systems3
CMSC 110 , CMSC 210 Description: Provides fundamental knowledge of, and practical experience with, database concepts. Includes study of information concepts and the realization of those concepts using the relational data model. Practical experience gained in designing and constructing data models and using SQL to interface to both multiuser DBMS packages and to desktop DBMS packages.
CMSC 110 , MATH 121 or MATH 125 Description: Algorithmic methods for function evaluation, roots of equations, solutions to systems of linear equations, function interpolation, numerical differentiation, and integration and use of spline functions for curve fitting. The focus is on managing and measuring errors in computation. Also offered as MATH 343 ; either COSC 343 or MATH 343 may be substituted for the other and may be used interchangeably for D/F repeats but may not be counted for duplicate credit.
ITMG 250 or CMSC 110 Description: A study of fundamental local area networking concepts. A detailed study of the basics of local area network (LAN) technology. A comparative study of commercially available LAN systems and products. Features a hands-on laboratory implementation of a LAN. Cross-listed as ITMG 352 . Either course may be substituted for the other for D/F repeats but may not be taken for duplicate credit.
Grade of “C” or better in CMSC 310 and junior status Description: Introduces computer graphics hardware and software. Explores and implements 2-D and 3-D modeling and transformations, viewing transformations, projections, rendering techniques, lighting, and shading using a current cross-platform 3-D graphics API. Includes creation of complex, photorealistic images, and animation principles.
CMSC 216 and either CMSC 345 or CMSC 352 / ITMG 352 Description: Explores mechanisms for protecting networks against attacks. Emphasizes network security applications that are used on the Internet and for corporate networks. Investigates various networking security standards and studies methods for enforcing and enhancing those standards.
none Restriction: none Description: Introduces the features, syntax, applications, and history of Unix. Includes utilities, system administration, development environments, and networking concerns including distributed systems, client-server computing, and providing Web services.
CMSC 310 and CMSC 341 Description: Covers the fundamental architecture of web-based applications. Presents client-side application development using markup languages such as XHTML/CSS, forms, scripting languages such as JavaScript and PHP, asynchronous updating of data such as AJAX, database access using SQL. Projects include development of distributed applications on the Internet. Includes best practices in usability, internationalization, security, and W3C accessibility standards for web applications.
CMSC 380Seminar on the Computer Profession and Ethics2
n/a Restriction: n/a Description: Introduces the field of artificial intelligence. Explores and implements solutions using classical and modern artificial intelligence techniques. Includes state space search, logical inference, knowledge representation, handling uncertainty, reiforcement learning, and other hot topics in the field.
CMSC 300 , CMSC 310 Description: Introduces the underlying working principles of electronic computers. Discusses the organization and architecture of computer components. Expounds on details of memory hierarchy, I/O organization, computer arithmetic, processor and control unit design, instruction set architecture, instruction-level parallelism, and the ways functional components interact together.
CMSC 310 Description: A comparative survey of programming language paradigms. Includes an examination of the properties, applications, syntax, and semantics of selected object-oriented, functional, and declarative programming languages.
CMSC 300 , CMSC 310 Description: Relates the formal concepts of automata and language theory to the practicality of constructing a high-level language translator. The structures and techniques used in lexical analysis, parsing, syntax-directed translation, intermediate and object code generation, and optimization are emphasized.
none Description: Introduces major computer vision topics including image processing, detection and recognition, and geometry-based vision. Culminates with learning-based vision and a real-life vision project.
None Description: Includes concepts needed for language processing, from the foundational building blocks of text — tokenization, language models, and word embeddings — through the neural architectures that power modern AI, including feedforward networks, Transformers, and Large Language Models. Explores how these tools are applied in real-world systems such as information retrieval, retrieval-augmented generation, and machine translation.
CMSC 310 and MATH 309 Description: Fundamental concepts of encoding and/or encrypting information, cryptographic protocols and techniques, various cryptographic algorithms, and security of information are covered in depth.
CMSC 300 , CMSC 310 or equivalents Description: Introduces the principles of operating system design and implementation. Includes interrupt services, process states and transitions, threads, scheduling algorithms, synchronization tools, deadlocks, virtualization, memory management of (main and virtual), storage devices management, file systems, and operating systems security.
CMSC 216 or instructor permission Description: Explores the various issues pertinent to maintaining acceptable levels of information security within organizations. Addresses issues involved in administering and managing information security systems. Intended to raise awareness of information security issues across organizations.
CMSC 310 or instructor permission Description: Formal methods for describing and analyzing programming languages and algorithms. Covers Backus-Naur forms, productions, regular expressions, introduction to automata theory, Turing machines, and recent concepts in algorithm theory computability.
CMSC 341 and CMSC 365 Description: Studies the development of Web services. Presents an in-depth understanding of server-side technologies for Web services including RPC, SOAP, and RESTful. Emphasis is placed on the use of XML and JSON to support multi-party heterogeneous distributed applications and includes XML fundamentals (e.g., DTDs, XML schemas, and DOM), and Web services (e.g., SOAP and WSDL,). Students complete hands-on projects utilizing current technologies to develop their own Web services and use existing Web services.
CMSC 210 Description: Provides analytical and practical coverage of cloud computing and web services. Focuses on the technology, frameworks and associated standards: cloud models, cloud platforms and scalability. Compares advantages and disadvantages of cloud computing platforms, identify security and privacy issues in cloud computing, and analyze performance, scalability, and availability of the underlying cloud technologies and software. Deploys applications over a commercial cloud infrastructure such as AWS or Windows Azure.
CMSC 319 or instructor permission Description: Planning, design, and implementation of large software systems using software engineering techniques. Students work on project teams on real or realistic software development projects. Credit for either COSC 473 or CMSC 493 , but not both, may count toward computer science major requirements for graduation; the other course credits will be counted as free electives.
See text below Description: Reading, review, and discussion of the current literature of computer science and industry professional and technical journals; oral presentations. Should be taken the last semester of the senior year. Should not be taken at the same time as CMSC 380 .