# Advanced Topics in Computer Science

posted in

The Advanced Topics course exposes students to several of the subfields of computer science that a student would encounter as a college major in the field. Assignments are more open-ended and require a greater degree of initiative from the students. The topics covered vary somewhat from year to year, in response to student and teacher interest. Examples of typical topics include digital-logic circuits (including basic logic gates, designing combinatorial and sequential circuits, and basic computer architecture), three-dimensional computer graphics (including mathematical fundamentals, transformations, perspective, and rendering techniques), networking (TCP/IP concepts and socket programming), and artificial intelligence (philosophy, logic, search, heuristics, and neural networks). Student projects include designing and building a simple programmable computer on breadboards and implementing a 3D renderer without using a 3D library.

## Units

Unit Essential Questions Content Skills and Processes Assessment
Digital Logic

How are computers built?

* Digital vs. analog signals
* Fundamental logic gates (AND, OR, NOT, XOR, NAND, NOR)
* Binary arithmetic
* How digital logic gates are used to perform binary arithmetic
* Flip-flops
* How flip-flops are used to store binary numbers
* Design of a simple computer
* Machine language

* how to design combinatorial digital logic circuits
* how to use sequential digital logic circuits (flip-flops)
* how to add binary numbers
* How to convert binary to decimal and decimal to binary
* How to use breadboards and ICs

* Design a 4-bit, 3-register computer using a digital logic simulator
* Build same computer using breadboards and ICs (class team project)

3D Computer Graphics

How are 3D models represented in a computer?
How are 3D models rendered on a 2D graphics display?

* vertex list, edge list, and polygon mesh model representation
* translation, rotation, and scaling of vertices
* using matrices to represent vertex transformations

* write a 3D wireframe renderer and animator

Network Programming

* How do computer programs communicate across a network?

* Sockets and Ports
* Clients and Servers

* How to write a network client
* How to write a network server

* Write a text and graphics chat program or a network game

Artificial Intelligence

* What is intelligence?
* Could a computer be intelligent?
* What current techniques are used to simulate intelligent bahviour in a computer?

* heuristics
* search and puzzle solving
* neural networks
* resolution