Teaching

  • Course: CSCI 6810 - MSCS Ready, Module 1 (Procedural Programming)
    Semester: most recent offerings: Fall 2020
    Remarks: This course is the first of six modules in the MSCS Ready sequence, designed to prepare those without an undergraduate degree in computing to enter the MS program in computer science. This module focuses on software development fundamentals: the software development process and software development tools, fundamental programming concepts including memory concepts, control structures, basic data structures and the design and simple analysis of algorithms. Programming language: C.
  • Course: CPSC 1900 - TA Training Seminar
    Semester: most recent offering: Fall 2020
    Remarks: This course is required for all new undergraduate teaching assistants, lab assistants, and/or graders for School of Computing undergraduate courses. Students learn policies, procedures, best practices, and pedagogy associated with their positions. Example topics include question redirection, privacy, grading using rubrics, writing grading scripts, lab management, and debugging techniques. To be taken Pass/No Pass only. Preq: Consent of department.
  • Course: CPSC/HCC 9500 - CS Education Research Seminar
    Semester: most recent offering: Fall 2020
    Remarks: This seminar course involves readings and presentations on current topics of interest in Computer Science Education Research.
  • Course: CSCI 3720 - Introduction to Software Engineering
    Semester: most recent offering: Spring 2020
    Remarks: This course provides an intensive introduction to software engineering. It covers each major phase of the software lifecycle. It provides introductory coverage of requirements analysis, requirements modeling, design modeling, and project management, and intermediate coverage of module-level design principles, program specification and reasoning principles, and program validation and verification techniques.
  • Course: CSPC 1010 - Systems Programming
    Semester: most recent offering: Fall 2016
    Remarks: This course is an introduction to modern problem solving and programming methods using C. This course is intended for students concentrating in computer science or related fields. Topics include Unix; representation of integer, floating point, and character data; declarations; loops and conditionals; functions and parameter passing; searching and sorting; structured data types; and pointers.
  • Course: CSCI 1730 - Systems Programming (UGA)
    Semester: most recent offerings: Spring 2014, Spring 2012
    Remarks: This course covers the basics of UNIX systems programming, including file and directory structures, basic and advanced file i/o, process creation, and interprocess communication. An initial unit on "C++ for Java programmers" will familiarize students with the use of C and C++ in systems programming.
  • Course: CSCI 4900/6900 - The Psychology of Programming (UGA)
    Semester: most recent offering: Spring 2013
    Remarks: This course course focuses on the psychology of how people understand and write computer software, with emphasis on research issues in program comprehension. The objective of this course is to investigate the existing body of literature on the cognitive and mental models of how people 1) learn to program, and 2) understand existing large programs. This material forms the basis for educational methods in introductory programming courses. Additionally, it forms the basis of the software environments and tools that are developed to assist software engineers in building and maintaining software systems. Students read and discuss research papers and design and conduct a small experiment, analyze the results, and produce a 6-8 page paper describing their experiment and its context and impact.
  • Course: CSCI 4900/6900 - Programming with Concurrency (UGA)
    Semester: most recent offering: Spring 2013
    Remarks: Concepts, techniques and tools for the development of concurrent software systems. Topics include modeling and specification of concurrency, design of concurrent software systems, libraries and languages for implementing concurrency, and verification of properties of concurrent programs.
  • Course: CSCI 6900 - Design, Implementation, and Verification of Concurrent Software (UGA)
    Semester: most recent offering: Fall 2010
    Remarks: Concepts, techniques and tools for the development of concurrent software systems. Topics include modeling and specification of concurrency, design of concurrent software systems, libraries and languages for implementing concurrency, and verification of properties of concurrent programs.
  • Course: CSCI 6900 - Research Methods in Computer Science (UGA)
    Semester: most recent offering: Fall 2010
    Remarks: This "lunch and learn" seminar is designed to help new graduate students acclimate to the systems environment at CS@UGA and to introduce them to tools and techniques needed for research and assistantship duties. Topics include: basic UNIX commands and setting up your CS account, LaTex and BibTex, Version Control with svn, Basic Systems Administration for Windows, Basic Systems Administration for UNIX, Anatomy of a Research Paper, and more.
  • Course: CSCI 7010 - Introduction to Programming (UGA)
    Semester: most recent offering : Spring 2010
    Remarks: Fundamental techniques of program development and supporting software tools and programming projects and applications in a structured computer language. The course emphasizes hands-on experience using microcomputers. Programming projects for this semester's version of 7010 will focus on software development for handheld devices. Initial units will focus on the Java programming language and applications for the Blackberry. If time permits, later units will provide an introduction to programming in Objective-C and the development of applications for the iPhone. It is not necessary to own a handheld device. Instead, we will make use of simulators for the Blackberry and iPhone interfaces.
  • Course: CSCI 1301 - Intro to Computing and Programming (UGA)
    Semester: most recent offering: Summer 2008 (Joint with Brian A. Smith)
    Remarks: Algorithms, programs, and computing systems. Fundamental techniques of program development and supportive software tools. Programming projects and applications in a structured computer language. Hands-on experience using microcomputers. We will be introducing some fundamental ideas in Computer Science and programming, focusing on the Java programming language. This will include the fundamentals of the object-oriented paradigm (classes, objects, encapsulation, inheritance and polymorphism), basic data structures such as arrays and lists, and basic algorithm design.
  • Course: CSCI 8710 Computer Systems Performance Evaluation (UGA)
    Semester: most recent offering: Fall 2008
    Remarks: This four-hour course address computer systems performance analysis. It introduces the main concepts and techniques needed to plan the capacity of computer systems, predict their future performance under different configurations, and design new applications that meet performance requirements. The course is mainly based on the use of analytic queuing network models of computer systems. These techniques are applied to study the performance of centralized, distributed, parallel, client/server systems, Web server and e-commerce site performance. The course also discusses performance measuring tools for operating systems such as Unix and Windows NT. The course provides the students with hands-on experience in performance evaluation through a project. The concept and applications of softw are performance engineering are also covered.
  • Course: CSCI 2720 Data Structures (UGA)
    Semester: most recent offering: Spring 2007
    Remarks: This course deals with the design, analysis, implementation, and evaluation of the fundamental structures for representing and manipulating data: lists, arrays, trees, tables, heaps, and graphs. Memory management of these data structures is also addressed.
  • Course: CSCI 4800/6800 Human-Computer Interaction (UGA)
    Semester: most recent offering: Spring 2007
    Remarks: This course introduces students to issues in the design, implementation, and evaluation of user interfaces for computer systems. Concepts in human factors, usability, and interface design are covered, and the effects of human capabilities and limitations on interaction with computer systems is studied. Students apply these concepts to the design and implementation of graphical user interfaces. Units on experimental design and statistical analysis, as well as new topics in HCI are included.


Clemson University School of Computing | Office: 104 McAdams Hall, Clemson, SC 29634 | 864.656.5874 | etkraem@clemson.edu