| source Georgetown (X) |
level |
department Computer Science (X) |
This course is for non-majors seeking an introduction to the principles and practices of computer science. These concepts are introduced in the context of current and future computing technologies such as computer graphics, Web programming, and artificial intelligence. As well, the course introduces some of the economic, legal, ethical, and social issues related to the capabilities and limitations of network and computing technology. The course first presents the basics of computing machinery: information and its representations, elements of computer organization, and low-level machine hardware. Next, the course covers the basics of computing software: algorithms and computer programming in machine, assembly, and high-level programming languages. Using the theories of computability and complexity, a discussion of the general capabilities and limitations of computing and networks follows. Finally, a survey of some computer and network applications provides a setting in which to apply the basic analytic concepts and technological tools previously introduced. Classes meet once per week for lectures and once per week for lab sessions. Course work includes weekly written and programming assignments, and midterm and final exams. This course may be used toward completion of the College math/science requirement. The course does not train students to use application programs such as word processors and Internet browsers. Prerequisite: none. Fall and Spring.
Score: 7.0452766 Details | Listing | Web page
Credits: 3
Score: 7.0452766 Details | Listing | Web page
Learn to apply Computer Science principles to create animations, cartoons, movies, games and other multimedia presentations. Macromedia Flash 7 or 8 will be used in this course. Basic programming skills will be introduced to create animations and games. Be prepared to have fun creating your interactive computer games, writing codes, creating music videos and creating cartoon movies. Limited seating and carries science credit similar to COSC 010.
Score: 7.0452766 Details | Listing | Web page
Credits: 3
Score: 7.0452766 Details | Listing | Web page
Although intended for computer science majors and minors, other students with a serious interest in learning C++ programming may take this class. Topics include: basic data types; the C++ string class; variables, constants, and their declarations; input/output (cin/cout), assignment, and arithmetic operators; conditional and repetition control structures; basic file operations; programmer-defined functions; value and reference parameters; scoping rules; name precedence; function and operator overloading; template functions; elementary software engineering principles; the Standard Template Library (STL); the vector class; elementary searching and sorting; abstract data types; programmer-defined classes; pointers; self-referential classes; dynamic object creation and destruction; stacks and linked lists; recursion; abstract base classes; virtual functions; polymorphism; template classes; and exception handling. This course will satisfy the college science requirement. Prerequisite: none. Fall and Spring.
Score: 7.0452766 Details | Listing | Web page
This course continues the development of program design principles begun in COSC-071. The objective of the course is to develop a mastery of object-oriented programming using the C++ programming language. Topics covered include inheritance; polymorphism; files; template classes; the Standard Template Library (STL); exception handling; recursion; searching and sorting algorithms; and elementary data structures such as, linked lists, stacks, queues, and trees. Prerequisite: COSC-071. Spring.
Score: 7.0452766 Details | Listing | Web page
This course, designed to be taken concurrently with COSC-072, covers mathematical tools and principles that are valuable to the computer scientist. Topics include: propositional and predicate logic; mathematical proofs, including induction; counting and basic probability theory; logarithmic and exponential functions; elementary graph theory; and "Big-O" notation and asymptotics. Prerequisite: none.
Score: 7.0452766 Details | Listing | Web page
This course is designed as a second year course for majors and minors and covers basic data structures and algorithm analysis. Starting with the art and science of analyzing algorithms, the main goal of this course is to learn various techniques for organizing data so that computer programs can access, modify, and delete data efficiently. Topics covered include basic data structures (for example, lists, stacks and queues), trees, hashing, heaps, disjoint sets, and graphs, self-adjusting data structures; worst-case, average-case, and amortized analysis; and basic problem solving techniques. The topics are theoretical in nature but have dramatic impact in practice. Prerequisites: COSC-072 and -127.
Score: 7.0452766 Details | Listing | Web page
The objective of the course is to develop a mastery of object-oriented programming using the Java programming language and to expose students to advanced programming concepts important for upper-division courses. Topics include, event-driven programming, graphical user interfaces (GUIs), 2/3D Graphics, security, multimedia, exception handling, threads, servlets, remote method invocation (RMI), sockets, networking, files, database connectivity (JDBC), java server pages (JSP), and Enterprise Java Beans (EJB). Prerequisite: COSC-071.
Score: 7.0452766 Details | Listing | Web page
After a brief historical overview, the course quickly introduces some theoretical ground work (Finite State Automata and Turing Machines) followed by some general design concepts (universal machines, and von Neumann and Harvard models).The next section contains a brief review of Boolean Algebra, an introduction to Logic Design, and a look at logic circuit implementations from mechanical switches to Very Large Scale Integration (VLSI). The first half of the course is capped by a Sequential Machine breadboard project. The remainder of the course covers standard computer architecture and organization from a programmer's perspective. Assembly language and C are the primary programming languages used. Prerequisite: COSC 071, COSC-127. Fall.
Score: 7.0452766 Details | Listing | Web page
This course is follow-up course to COSC-250, and completes the picture the fundamentals of computer systems. The focus is on the organization, performance, and low-level software control of the elements of a complete computer system. The course begins by introducing the instruction-set architecture of a commercial CPU, and develops some basic Assembly Language programming skills. The course introduces the low-level control interfaces of some basic system hardware components; keyboards, video screens, and disk drives; and develops their low-level interrupt processing control software. Finally, the course surveys the remaining system components: their organization, performance, and low-level software interfaces to the operating system. Time permitting, the course includes a look at modern high-performance processor architecture, and non-traditional computing. Course work includes weekly programming and homework assignments, and implementation in C and assembly language of a bootable, nano operating system. Prerequisite: COSC-250. Spring.
Score: 7.0452766 Details | Listing | Web page
This course acquaints the student with different classes of programming languages, criteria for language selection in various application areas, and the fundamentals of language design. Formal notations for language definition will be introduced. Run time support for each class of language will be examined. The student will be required to write an interpreter to become familiar with some of the concepts covered in the course. Prerequisite: COSC-173.
Score: 7.0452766 Details | Listing | Web page
Credits: 3
Score: 7.0452766 Details | Listing | Web page
Credits: 1
Score: 7.0452766 Details | Listing | Web page
This course explores various techniques used in the design and analysis of computer algorithms. Starting with the divide-and-conquer technique, the course covers various general approaches such as the greedy method and dynamic programming. Depending on time, various examples from the following problem domains will be considered: graph theory, shortest path, max-flow, matching, FFT, data compression, cryptography, and computational geometry. The notions of NP-completeness and computability will be introduced. If time permits, students will be introduced to online and parallel algorithms. Prerequisite: COSC-173. Spring.
Score: 7.0452766 Details | Listing | Web page
The purpose of this course is to teach the student how to design and develop large software systems. A term project is assigned that implements the tools described in the course. Students work on this project in teams. Topics covered include: software reliability and its implications; the software development cycle; Object-oriented modeling for both Domain Modeling and Software Modeling using the Unified Modeling Language; cost-benefit analysis; the design of reliable software; hierarchical system diagrams; the implementation of large software systems; and the impact of innovations such as, event-based programming, distributed programming, and Internet technologies. Additional topics that may be covered are software security, design patterns, and business models. Prerequisites: COSC-072, or permission of the instructor.
Score: 7.0452766 Details | Listing | Web page
This course is designed to give a real-world experience to students interested in leading large software development projects through their conceptualization, design, and development. The initial four weeks of the course covers an introduction to current software architectures and a review of software design methodologies. Subsequently, members of the class are assigned individual software development roles and design a software solution in support of some local, information technology-based problem. At times, IT Corporate officers participate during the software development life cycle. Experience will be gained in Object-Oriented Lifecycle, Design and Programming using Rational Rose, Java Servlets, Internet Technologies, Project Management using Microsoft Project, and Configuration Management. Prerequisites: COSC-175 and -345. Spring, odd years. (Offered 2005-06)
Score: 7.0452766 Details | Listing | Web page
This course will describe the basic principles of cryptograhy and how it is used in modern computer and communication systems. It will cover simple ciphers, modern ciphers, public-key cryptography, steganography, and cryptanalysis. Students will learn how cryptography is used for message secrecy, integrity, authentication, and digital signatures. Application areas to be discussed include e-mail, files, network communications, and electronic payments. Students will write and use cryptographic software. Prerequisites: COSC- 072, -127. (Offered 2005-06)
Score: 7.0452766 Details | Listing | Web page
Credits: 3
Score: 7.0452766 Details | Listing | Web page
This course introduces students to means of assuring the confidentiality, integrity, and availability of information through mechanisms of technology, policy, and education. Topics will include: encryption mechanisms; policy development and risk analysis; physical and personnel security; identity and authentication; malicious code; secure program design, development, and review; system auditing and integrity; computer forensics; TCP/IP security including DoS, intrusion detection, firewalls, and wireless security; and legal, social, and ethical issues. Prerequisite: COSC-173. Spring.
Score: 7.0452766 Details | Listing | Web page
The purpose of this course is to teach the student how to design and develop large software systems. A term project is assigned that implements the tools described in the course. Students work on this project in teams. Topics covered include: software reliability and its implications; the software development cycle; Object-oriented modeling for both Domain Modeling and Software Modeling using the Unified Modeling Language; cost-benefit analysis; the design of reliable software; hierarchical system diagrams; the implementation of large software systems; and the impact of innovations such as, event-based programming, distributed programming, and Internet technologies. Additional topics that may be covered are software security, design patterns, and business models.
Score: 7.0452766 Details | Listing | Web page
Credits: 3
Score: 7.0452766 Details | Listing | Web page
This course studies the software systems that provide the interface between the computer system hardware resources and the users of the system. This interface is composed of a large collection of programs that provide simplified and uniform access to information storage (data and programs on tape, disk, and in memory), processing elements (CPUs and remote computers), input/output devices (telecommunications, keyboards, mice, video displays, printers, etc.), and data acquisition and equipment control devices. Topics include, processes and threads of execution, concurrent process synchronization, concurrent access to hardware resources, file systems, memory management and virtual memory, job scheduling, system modeling and performance evaluation, network communication and protocols, and computer and network security. A variety of example operating systems of different types will be examined and their characteristics compared. Prerequisites: COSC-175 and COSC 250. Spring.
Score: 7.0452766 Details | Listing | Web page
This course covers the theoretical design principles of modern database systems, the data structures and algorithms used in their implementation, the techniques and tools used in designing databases, and the applications of database capabilities in knowledge discovery. Prerequisites: COSC-072.
Score: 7.0452766 Details | Listing | Web page
This course exposes students to advanced database management system design principles and concepts. We will cover advanced topics in databases, including: query processing and optimization, concurrency control, distributed and parallel databases, data warehousing, analysis, and mining. Students will also develop a web-based data warehouse application. Prerequisite: COSC-380. (Offered 2005-06)
Score: 7.0452766 Details | Listing | Web page