18 courses with the subject CPSC, 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.
CPSC 120Principles of Computer Science Designed to appeal to a diverse audience, this course examines some
of the fundamental ideas of the science of computing within a particular topic area, which varies from semester to semester. Past topics have included Graphics and Animation, Multimedia, Robots, and Web Site Development. This course is intended for students with no previous programming experience, and is appropriate for those who are in- terested in computer science as well as those who might not have considered computer science but are interested in a particular topic area. This course counts towards the major and minor in computer science but cannot be taken concurrently with or after completion of CPSC 124. No prerequisites.
CPSC 220Introduction to Computer Architecture This course reveals how hardware executes software. Students
design digital logic circuits to work with binary data, develop programs using both assembly language and machine language, and analyze operations of the central processing unit during program execution. This course has a re- quired lab component and is required for the major in computer science. Prerequisite: CPSC 124. (Offered annually) CPSC 225 Intermediate Programming This course builds on CPSC 124, covering some of the more advanced fun- damentals of programming including basic data structures (such as lists, stacks and queues, binary trees, and hash tables), recursion, common algorithms (such as searching and sorting), and generic programming. This course also looks more deeply at object-oriented programming, including the use of class hierarchies. Currently, the course is taught using the Java programming language. This course has a required lab component and is required for the ma- jor and minor in computer science. Prerequisite: CPSC 124. (Offered annually)
CPSC 229Foundations of Computation This course introduces students to some of the mathematical and theo
retical foundations of computer science, and to their practical applications to computing. Topics include proposi- tional and predicate logic, sets and functions, formal languages, finite automata, regular expressions, grammars, and Turing machines. This course is required for the major in computer science. Prerequisite: CPSC 124. (Offered annually) CPSC 271 Topics in Computer Science Each time this course is offered, it addresses a topic in computer science that is not covered as a regular course. The topic is covered at a level that is appropriate for any student who has successfully completed an introductory programming course. Past topics have included web programming, hu- man-computer interaction, and Linux system and server administration. This course may be repeated for credit by permission of the department. Prerequisite: CPSC 124 or permission of the instructor. (Offered occasionally)
Subject
CPSC
Type
course
Repeatable
may be repeated for credit by permission of the department.
CPSC 310Computational Neuroscience Computational neuroscience uses techniques from mathematics and com
puter science to model, simulate, and analyze the nervous system at multiple scales. It has become an essential tool in multiple fields, including neuroscience, medicine, and biomedical engineering. Students will study different neural modeling approaches, including physics-based models, firing rate models, and statistical models. A significant focus will be algorithms for implementing, executing, and analyzing simulations. Models will be constructed and simulated for single neurons, synapses, and networks. Students will evaluate numerical simulations with regard to numerical accuracy and computational efficiency. Prerequisite: CPSC 225. (Offered alternate years)
CPSC 329Software Development This course continues the study of programming by focusing on software design
development, and verification - the skills beyond fluency in a particular language which are necessary for devel- oping large, reliable programs. Topics include object-oriented design, the use of APIs, and testing and verification. Techniques common in modern software development will also be studied. Specific techniques may include GUIs and event-driven programming, multi-threading, client-server networking, fault-tolerant computing, stream pro- gramming, and security. This course is required for the major in computer science. It includes a required lab compo- nent. Prerequisite: CPSC 225. (Offered annually) CPSC 331 Operating Systems An operating system, such as Windows, Mac OS, or Linux, is a fundamental part of any computing system. The core concept of processes in modern operating systems is explored. Techniques covered include process execution, CPU scheduling, address translation, and virtual memory. Additional topics may include concurrency with threads, file systems, and security basics. An introduction to the C programming language is used to demonstrate system level applications. Prerequisite: CPSC 225. (Offered alternate years)
CPSC 424Computer Graphics This course studies the principles underlying the generation and display of 3D
computer graphics. Topics include geometric modeling, 3D viewing and projection, lighting and shading, color, and the use of one or more technologies and packages such as WebGL, OpenOL, and Blender. Advanced topics might include ray tracing, global illumination, texture and bump mapping, the mathematics of curves and surfaces, volu- metric rendering, and animation. This course includes a required lab component. Prerequisite: CPSC 329. (Offered alternate years)
CPSC 433Compilers This course explores the implementation of modem programming languages by looking at
compiler design and construction. The course focuses mainly on object-oriented programming languages, although it also looks briefly at compilation of languages from other programming paradigms. Major topics in compilation are covered, including scanning, parsing, semantic analysis, and code generation. Time permitting, the course also covers some advanced topics, including garbage collection and optimization. This course has a required lab compo- nent. Prerequisites: CPSC 229 and CPSC 329. (Offered alternate years)
CPSC 441Computer Networks and Distributed Processes One of the most important recent developments in com
puting is the explosive growth in the use of computer networks, which allow computers to communicate and work together. This course is an introduction to the theory and practice of computer networks, the software protocols that allow them to operate, and the applications that make use of them. Topics covered include direct link networks, packet switching, inter-networking, end-to-end protocols, network applications, and network security. Prerequisite:
CPSC 444Artificial Intelligence This course serves as an introduction to some of the major problems and tech
niques in the field of artificial intelligence. Artificial intelligence generally deals with problems that are too large, complex, or poorly-specified to have exact algorithmic solutions. Topics to be covered might include knowledge representation, natural language processing, machine learning, neural nets, case-based reasoning, intelligent agents, and artificial life. Prerequisite: CPSC 329. (Offered alternate years)
CPSC 451Capstone Independent Study This independent study can be taken in the senior year as the capstone ex
perience in the computer science major. A student who would like to pursue this option must find a faculty sponsor, as for any independent study, and must submit a written proposal for the independent study. The proposal must be approved by the department chair. A Capstone Independent Study must satisfy the general criteria for a computer science capstone course: a significant project integrating theory and practice, and utilizing software development principles, practices, and tools; a significant design/planning experience where students must weigh alternatives and choose an appropriate approach; and a significant written, oral, and/or visual presentation of work beyond the program code itself. Note that in some cases an Honors course, CPSC 495, that does not lead to a completed Honors project might be converted into a CPSC 451 course instead of CPSC 450; this will require approval by the department chair.
CPSC 499 Computer Science Internship CPSC 499 offers academic credit for an internship in which the student en- counters computer science concepts that are new to them or applies familiar computer science concepts in unfamil- iar contexts. To get academic course credit, the student should consult before starting the internship with a faculty member of the Department of Mathematics and Computer Science who will act as sponsor. The student and faculty member should agree on what will be required to receive credit, which will ordinarily include: a reflective journal HWS.EDU/CATALOGUE 154 2023 - 2024 CATALOGUE