Back Home
Skip navigation links
Home =
About Me = biographical information
Education = academic history
Experience = computer and leadership experience
Activities = activities, hobbies, and interests
Contact = e-mail and PGP information
Resume = standard resume

Course Work

The following is a list and description of courses I have taken at the University of Tennessee. Numbers in parenthesis indicate credit hours. "G" stands for graduate level course.

Computer Science Courses

CS 102
Introduction to Computer Science (4)
Taught by Wallace Mayo. Problem solving and algorithm development. Introduction to programming in C. Organization and characteristics of modern digital computers. Emphasis on developing good programming habits. Building abstractions with procedures and data.

CS 140
Data Structures (4)
Taught by Dr. James Plank. Advanced problem solving and algorithm development, structured programming, data structures and applications, I/O techniques, lists, queues, trees, algorithms, files. Taught in C. Objectives as given by professor:

  • Become self-sufficient C programmers.
  • To understand basic data structures.
  • To understand basic algorithm analysis.

CS 160
Computer Organization (4)
Taught by Dr. David Straight. Number systems, Boolean algebra, combinational and sequential circuits, registers, processor functional units and control, pipelining, memory and caching, stored program computing, memory management, computer system organization, assembly language programming.

CS 300
Scripts & Utilities (1)
Covers many of the practical tools available under Unix which will enable students to become more efficient in completing labs and research projects. Some topics to be covered: sh, gcc/cpp/purify/quantify, make, cat/grep/find/sort/at, ed/sed, awk, perl, LaTex, tcl/tk.

CS 302
Fundamental Algorithms (3)
Taught by Dr. Brad VanderZanden. Design, analysis, and implementation of fundamental algorithms, such as sorting and searching, and their data structures. Objectives as given by professor:

  • Acquire a mastery of a variety of algorithms fundamental to computer programming by building on the data structures and algorithms learned in CS140.
  • Acquire a familiarity with object-oriented programming by writing and debugging programs in C++.
  • Acquire a familiarity with a variety of Unix tools that aid in writing and debugging programs.

CS 311
Discrete Structures (3)
Taught by Dr. Jesse Poore. Equivalence relations, partial orderings. Combinatorics, permutations, analysis of algorithms. Finite automata and regular languages.

CS 360
Systems Programming (3)
Taught by Dr. David Straight. Introduction to user-level systems programming; file control, process control, memory management, system utilities, network programming.

CS 365
Concepts of Programming Languages (3)
Taught by Dr. Brad VanderZanden. Principal goal is to provide the tools necessary for the critical evaluation of existing and future programming languages and constructs. Additionally, this course introduces the study of compiler design and construction.

CS 380
Theory of Computation (3)
Taught by Dr. Michael Thomason. Recursive functions, finite automata, Turing machines, computability, halting problems, Godel theorem.

Senior Thesis I (3)
Independent research with Dr. Brad VanderZanden for Senior Honors Project. See my Senior Honors Project page for more info.

CS 471
Numerical Analysis (3)
Taught by Dr. Charles Collins. Introduction to computation, instabilities, and rounding. Interpolation and approximation by polynomials and piecewise polynomials. Quadrature and numerical solution of initial and boundary value problems of ordinary differential equations, including stiff systems.

CS 472
Numerical Analysis II (3)
Taught by Dr. Charles Collins. Study of the problems involving the solving of linear and nonlinear systems of equations and related problems. Goals include (1) to derive and analyze the basic algorithms, (2) to understand how they are used to solve scientific problems, and (3) to gain practical experience implementing these algorithms.

CS 494
Computer and Network Security (G,3)
Taught by Dr. Tom Dunigan. Covered three areas of computer and network security: (1) security risks and countermeasures, (2) principles of computer cryptography, and (3) applied cryptography. Topics included:

  • risk assessment
  • UNIX vulnerabilities
  • hash functions
  • authentication and authorization
  • sniffers
  • firewalls
  • intrusion detection
  • Kerberos
  • cryptology and steganography
  • random numbers
  • secret key encryption
  • public key encryption and PKI
  • crypto API
  • Commercial products: PGP, ssh, SSL, IPsec
  • legal/political/ethical issues.

CS 530
Computer System Organization (G,3)
Taught by Dr. Robert Ward. This course covers the fundamentals and characteristics of modern-day computer systems, emphasizing the techniques of quantitative analysis and evaluation. The covered material provides a thorough discussion of major component subsystems of high performance computers (pipelining, instruction-level parallelism, memory hierarchies, input/output and interconnections).

CS 560
Software Systems (G,3)
Taught by Dr. Michael Vose. Covers design and implementation of compilers, software systems; optimization, and run-time storage administration. Also discusses software system design issues as well as description, structure and design of contemporary software systems.

CS 580
Foundations (G,3)
Taught by Dr. Michael Langston. Covered theory of computation, Cook's Theorem and NP completeness, decidability, sorting, dynamic programming, time complexity.

CS 593
Human Computer Interaction and Usability (G,3)
Taught by Dr. Brad VanderZanden. An in-depth study of current research in the areas of Human Computer Interaction and Usability based on texts by Shneiderman, Norman, and Nielsen.

CS 593
Open Geospatial Web Standards (G,3)
Taught by Dr. Brad VanderZanden. A survey of existing open standards and interfaces for utilizing and sharing geospatial data, especially in the context of wide area sensor networks. This course included the implementation of an Open Geospatial Consortium Web Feature Server (WFS).

CS 593
Informal Interfaces (G,3)
Taught by Dr. Brad VanderZanden. A survey of the current literature related to informal interfaces including the study of research published by the Berkeley Group for User Interface Research and the Human-Computer Interaction Lab at the University of Maryland.

CS 593
Program Committee (G,3)
Taught by Dr. James Plank. Course is designed to run a mock "program committee." Students read and review papers, and then at the Program Committee meeting they must discuss and defend the papers and reviews.

CS 593
Editorial Review Board (G,3)
Taught by Dr. James Plank. Course is designed to run a mock "editorial review board" in which students read and review papers. The students then meet to discuss and defend the papers and their reviews.

CS 594
Graphical User Interfaces (G,3)
Taught by Dr. Brad VanderZanden. The course is a survey of tools and techniques for constructing highly interactive, graphical user interfaces. The course is oriented toward programming rather than towards usability or graphic design. However, some usability and graphic design topics are covered. The course is also oriented toward the creation of applications involving custom, programmer defined objects and behaviors. Emphasis is on four major areas:

  • Object Oriented Programming: The course discusses design idioms, frequently called design patterns, for creating graphical interfaces using object oriented programming. Design patterns are general solutions to recurring design problems that arise in programming applications.
  • Display Management: When the user manipulates objects in a user interface, both the interface and the application typically provide various types of pictorial feedback. This feedback may "damage" various areas of the screen, and may require that the graphical objects that inhabit these areas be redrawn. The course discusses efficient algorithms for incrementally detecting and updating damaged areas of the display.
  • Spreadsheet-Style Programming: The spreadsheet-style paradigm is useful for specifying graphical relationships between objects, such as keeping a piece of text centered within a box. It is also useful for scheduling and executing the numerous side-effects that an operation may have on an application. The course discusses aspects of the spreadsheet paradigm that can be applied to graphical interfaces and algorithms for efficiently scheduling and executing equations.
  • Input Handling: The user interface must translate low-level input events, such as keyboard presses or mouse presses, into high-level behaviors that an application understands (e.g., delete an object, move an object, etc.). The course discusses models and algorithms for handling input and explores the concept of interaction techniques (combinations of graphics and behaviors that are reused in many interfaces).

CS 594
Software Engineering and Management (G,3)
Taught by Dr. Thomas Potok. This course is a general survey of software engineering with a focus on real world situations and challenges that influence the development of software projects.

CS 594
Software for Intelligent Robotics (G,3)
Taught by Dr. Lynne Parker. This course provides an introduction to the key artificial intelligence issues involved in the development of intelligent robotics. A variety of algorithms are examined for the control of autonomous mobile robots, exploring issues that include software control architectures, localization, navigation, sensing, planning, and uncertainty.

CS 594
Distributed Intelligence in Autonomous Robotics (G,3)
Taught by Dr. Lynne Parker. This course explores the topic of distributed intelligence in the context of distributed, collective, and cooperative robotics and embedded systems. The focus is on key research issues in this field, such as multi-robot architectures and action selection; cooperative localization, mapping, and exploration; cooperative object transport; multi-robot motion coordination; reconfigurable robotics; and team learning. Emphasis in all of these focus areas is on the development of algorithms and software that enable a distributed team of intelligent mobile robots or embedded systems to achieve global goals in the physical world using only distributed, local information. This course provides a theoretical background of these topic areas, along with a study of specific algorithms for multi-robot control and embedded systems.

CS 594
Projects in Machine Learning (G,3)
Taught by Dr. Lynne Parker. This course covers how to build systems that learn and adapt using real-world applications (such as robotics and brain wave signal understanding). Some of the topics covered include concept learning, neural networks, genetic algorithms, reinforcement learning, and instance-based learning. The course is project-oriented, with emphasis placed on writing software implementations of learning algorithms applied to real-world problems.

ECE 517
Reinforcement Learning in Artificial Intelligence (G,3)
Taught by Dr. Itamar Elhanany. Reinforcement learning (RL) is an exciting and relatively new machine learning discipline, which corresponds to a broad class of methods that allow a system to learn how to behave in incompletely known environments based on reward signals. A key concept in RL is that the intelligent agent learns by itself, based on acquired experience, rather than by being externally instructed or supervised. This course addresses various topics pertaining to the theory and practice of RL.

Mathematics Courses

MATH 147-148
Honors: Calculus 1, II (4,4)
Covering single variable calculus. Differential and integral calculus with applications.

MATH 231
Differential Equations (3)
Emphasizing solution techniques. Includes first-order equations and applications, theory of linear equations, equations with constant coefficients, Laplace transforms, and series solutions.

MATH 247
Honors: Calculus III (4)
Calculus of functions in two or more dimensions. Includes solid analytic geometry, partial differentiation, multiple integration, and selected topics in vector calculus.

MATH 251
Matrix Algebra (3)
Algebra of simultaneous linear equations and matrices. Includes Gaussian elimination, determinants, vector spaces, linear transformations, eigenvalues, and eigenvectors.

MATH 300
Introduction to Abstract Mathematics (3)
Algebra of sets, functions, relations, mathematical induction, algebraic structure of the real number system, order properties, and completeness.

MATH 323
Probability and Statistics (3)
Discrete and continuous random variables; conditional probability, expectation, moment generating functions; law of large numbers, central limit theorem. Elements of statistical inference, estimation, and hypothesis testing.

MATH 351
Contemporary Abstract Algebra I (3)
Introduction to abstract algebra, emphasizing integers and polynomial rings.

MATH 371
Numerical Algorithms (3)
Development and application of fundamental algorithms for finding roots of equations, solving systems of linear equations, interpolating, fitting data using least-squares, differentiation, integration, and solving ordinary differential equations. Same as CS 370

MATH 447-448
Honors: Analysis, Advanced Calculus I,II (3/3)
Theory of sequences, series, differentiation, metric spaces, and Riemann integration of functions of one or more variables.

Honors Seminars

UH 117
Honors Freshman Seminar (1,1)
Sequence required of all freshman honors students. Concentrates on critical thinking, contemporary issues, international study, computer skills and writing.

UH 338
Business & The Law--Current Issues (1)
Focuses on current legal issues in the business sector. Example topics include disability discrimination, defamation of character, and breach of fiduciary duty. We all are expected to have a basic understanding of the law in our society, whether or not we are an attorney. Often when the attorney is finally called in, irreparable action has already been taken. Lawsuits then arise due to the poor, ill-informed decision making by the business management team. The goal of the seminar is to foster critical thinking about basic legal issues so as to incorporate business and legal ethics into the initial decision making process.

UH 338
Genesis: God in Process of Becoming (1)
A study of the Book of Genesis. Throughout history, this text has been a foundation for religion. In studying Genesis, it is important to consider both the readings and the readers. The readings of Genesis allow for many differing interpretations by the reader, as clearly seen in Bill Moyers' "Genesis: A Living Conversation"

UH 338
Creating an Online Portfolio (1)
Using a reflective process, this course helped to summarize my college experiences and relate them to my future goals. This course emphasized developing a Web-based portfolio and digital resume.

UH 338
History of Mathematics (1)
A brief overview of the history of mathematics.

UH 338
Design of the World Wide Web (1)
A look at designing web pages.

UH 458
Senior Honors Seminar (1)

Other Courses

Biology 101-102 (4,4)
Economics 201 (4)
English 360 (3) - Professional and Technical Writing
History 241-242 (3,3) - Western Civilization
Philosophy 110 (3)
Psychology 110 (3)
Religious Studies 102 (3) - Comparison of World Religions
Religious Studies 381 (3) - Intro to Judaism
Spanish 150, 211, 212 (3,3,3)


I will bow down . . . and will praise your name for your love and your faithfulness. - Psalm 138:2