Program Lang Paradigms

The main purpose of a programming language is to provide a natural way to express algorithms and computational structures. The meaning of “natural” here is controversial and has produced several distinct language paradigms. Furthermore, the languages themselves have shaped our understanding of the nature of computation and of human thought processes. We will explore some of these paradigms and discuss the major ideas underlying language design. Several languages will be introduced to illustrate ideas developed in the course.

Data Structures

A fundamental problem in computer science is that of organizing data so that it can be used effectively. This course introduces basic data structures and their applications. Major themes are the importance of abstraction in program design and the separation of specification and implementation. Program correctness and algorithm complexity are also considered. Data structures for lists, stacks, queues, dictionaries, sets, and graphs are discussed. This course will provide advanced programming experience.

Writing in STEM

(Offered as ENGL 298 and COSC 203) This interdisciplinary Intensive Writing course investigates the role of writing in public discourse about STEM research, focusing on the way that the general public understands–or misunderstands–science and data. It teaches students to communicate technical information to a variety of audiences beyond academia. As such, this course will involve a community-engaged learning project related to science and communication. Assigned texts will include a range of sources (books, articles, podcasts, videos) from writing studies and a STEM discipline.

Systems I: Computer Org;

This course will cover building blocks and design principles of computer systems, including how user programs are translated and executed on hardware. Beginning with Boolean logic and the design of combinational and sequential circuits, the course discusses the design of computer hardware components, microprocessing, pipelining, basic machine architecture, and the interpretation of machine instructions and assembly languages. The course will also introduce operating systems topics, basic memory management, and parallel processing.

Thinking for CS

Analytical thinking is inherent in every aspect of computer science. We need to be able to answer questions such as: how do I know that my program works correctly? How efficient is my approach to solving a problem? How does human-readable code get translated into something that can run on physical hardware? What problems are even solvable by computers? In order to study such questions, computer scientists must be able to communicate with one another using a common language, express ideas formally and precisely, and reason logically about these ideas.

Intro CompSci II Lab

COSC 112 Lab Section

A continuation of COSC 111. This course will emphasize more complicated problems and their algorithmic solutions. The object-oriented programming paradigm will be discussed in detail, including data abstraction, inheritance, and polymorphism. Other topics will include stacks, queues, linked lists, programming for graphical user interfaces, and basic topics in probability. A laboratory section will meet once a week to give students practice with programming constructs.

Intro CompSci II Lab

COSC 112 Lab Section

A continuation of COSC 111. This course will emphasize more complicated problems and their algorithmic solutions. The object-oriented programming paradigm will be discussed in detail, including data abstraction, inheritance, and polymorphism. Other topics will include stacks, queues, linked lists, programming for graphical user interfaces, and basic topics in probability. A laboratory section will meet once a week to give students practice with programming constructs.

Intro Comp Science II

A continuation of COSC 111. This course will emphasize more complicated problems and their algorithmic solutions. The object-oriented programming paradigm will be discussed in detail, including data abstraction, inheritance, and polymorphism. Other topics will include stacks, queues, linked lists, programming for graphical user interfaces, and basic topics in probability. A laboratory section will meet once a week to give students practice with programming constructs.

Subscribe to