below are my philosophy on grading and a list of the courses that i have taught.
assignments are broken down into individually graded items. any item to be graded will be scored on the 4-point scale shown below (zero-based).
|\(0\)||nothing of value was submitted|
|\(1\)||solution submitted, but clearly not correct|
|\(2\)||solution is only partially correct|
|\(3\)||perfect solution, meets every requirement and expectation|
a score of \(0\), \(1\), and \(3\) are clearly identifiable; anything not clearly identifiable is scored a \(2\). if i feel a particular item is more important and therefore should carry more weight, i may use a multiplicative factor (\(n\)) to change the possible scores for that item to be \(0\), \(n\), \(2n\), and \(3n\).
the reason for using discrete values is to avoid arguments over unimportant issues, to remove (as much as possible) the subjectivity in grading, to allow (as much as possible) room for unit/automatic testing systems, and to reduce the turnaround time for receiving a grade. furthermore, this scoring can often be more telling than some arbitrary number of points.
i convert an individual item score to a letter grade as follows: \(0\) maps to an F, \(1\) to D-, \(2\) to C (average), and \(3\) to A. for a final grade for an assignment, i use the following chart where \(T\) is the total points available divided by 18.
|\((13T,14T]\)||B-||\((14T, 15T]\)||B||\((15T, 16T]\)||B+|
|\((13T,14T]\)||C-||\((11T, 12T]\)||C||\((12T, 13T]\)||C+|
|\(( 4T, 6T]\)||D-||\(( 6T, 8T]\)||D||\(( 8T, 10T]\)||D+|
|\([ 0T, 4T]\)||F|
note: there will be no rounding up when determining your final score. for example, receiving a 16 out of 18 will always be a B+ and never an A-. i do reserve the right to award a higher grade than strictly earned; outstanding attendance and class participation figure prominently in such decisions.
exams and final course grades will be scored similarly.
i have based my grading philosophy on an article by dr. william j. rapaport, professor of cse/philosophy/center of cognitive science, state university of new york at buffalo. how i grade (the triage theory of grading): pdf, original.
|a||0||< x ≤||0|
|a-||0||< x ≤||0|
|b+||0||< x ≤||0|
|b||0||< x ≤||0|
|b-||0||< x ≤||0|
|c+||0||< x ≤||0|
|c||0||< x ≤||0|
|c-||0||< x ≤||0|
|d+||0||< x ≤||0|
|d||0||< x ≤||0|
|d-||0||< x ≤||0|
|f||0||< x ≤||0|
- interactive webpage design, cos143 j16
- intro to game engine design, cos170 su17, su18
This course will introduce students to the design and development behind a cutting-edge, modern day gaming engine—the operating system behind the video game. We will discuss the purpose and complexities of engines by using a few different gaming engines, sampling a few games, and then recreating a few classic games from scratch. We will be coding in Python or Lua/PICO-8, but no prior programming experience is necessary.
- data structures and algorithms, cos265 f18, f17, f16, f15, f14
This course provides you as a Computer Scientist with a significant understanding of key elements of data structures and algorithms that are ubiquitous in computing. At the completion of the course you will be able to do the following. * Understand key data structures that occur repeatedly in almost every program ever written, including the list, queue, stack, deque, hash, set, heap, tree, and graph. * Possess a deep understanding of algorithms that recur throughout all types of computer programs, including sorting and recursion. * Know how to choose the appropriate data structure or algorithm for the problem you are solving. * Be able to analyze the complexity of an algorithm and gauge its appropriate use in a given software context. * Understand object-oriented programming concepts and techniques more deeply. * Have written numerous clear and functional programs in the Java language. * Possess a working knowledge of the Unified Modeling Language (UML) and its most important notations. * Understand the concepts behind event-driven programming and have experience implementing Graphical User Interface (GUI) code using this paradigm. * Have experience using a revision control system to track your changes and collaborate with other software developers. * Understand how to use a sophisticated Integrated Development Environment (IDE), including integration with other software tools (e.g., compiler, debugger, and revision control system).
- current literature survey, cos310 f18, f17, 16, su16
A survey of classical and current literature in computer science. A goal of the course is to produce a concept for a research proposal with literature survey appropriate for an undergraduate research project. Students lead discussions on papers and topics of interest.
- algorithms design, cos320 s18
Algorithms and related data structures from a variety of areas are examined and analyzed. Parallel processing paradigms and theoretical topics, such as complexity models, are introduced.
- computer graphics, cos350 f18, f17, f16, f15, f14
- computer vision, cos351: 2018 spring, 2016 spring
A study of the fundamental concepts of digital image acquisition, manipulation, enhancement, representation, analysis, and understanding.
- language structures, cos382 s17, s15
The course will include discussion of the syntax, grammar, semantics, and translation of programming languages, features, and implementation of common procedural languages, and alternative paradigms. Object-oriented programming will be discussed in the context of Java and Smalltalk. Prolog will be used as an example of logic programming. Haskell will be used as an example of functional programming. The ANTLR (ANother Tool for Language Recognition) will be used to construct a domain specific language as well as other purposes.
- advanced projects, cos394 f17
Students complete an open-ended software development project, or laboratory experiment project. The individual project depends on students and faculty interest. Specific learning outcomes vary depending on faculty, student, and project selected. Independent or small group projects are possible.
- surfaces and modeling, cos424 s17, s15
This course is an advanced graphics course, purposed with developing an understanding for the creation of 3D graphic objects and scenes by studying surface and curve representation techniques and approaches to 3D modeling. The primary outcome of the course is the production of a modeling system which supports data exchange with major 3D editing software, such as Maya and Blender. The course has two additional outcomes that underly and support the primary outcome. One of these outcomes is the learning, developing, and application of critical thinking skills. These skills will not only assist students in understanding the graphics material or other computer science topics more deeply and fully, but they will also be transferable and applicable to life in general. The other outcome is learning to work together as a group using a code repository and issue tracker.
- research, cos45x 2014–now
COS 450: Investigative learning involving closely directed research. COS 452/3: Participation in a research project under faculty direction. A formal presentation of final results is required.
- principles in human-computer interaction, sys214 s18, f16, f15, f14
Human Computer Interaction (HCI) is a field that combines concepts from multiple disciplines including computer science, cognitive psychology, and other field. It focuses on the interactions between humans and computers but is a part of the larger field of interaction design. This course will provide an introduction to HCI through the following teaching methods: Reading about and discussing design interaction principles, processes, and methods; Applying the principles, processes, and methods of design interaction in a hands-on group project; Performing qualitative research and visual analysis to create design artifacts that inform design decisions; Creating and evaluating prototypes; and Critiquing existing interactions and interfaces.
- game studies, sys270 s16
Games are as popular as ever on computers, consoles, mobile and tabletop. Various Conventions, Kickstarters, Blogs, and Media Outlets are devoted to games. Game publishers are seeking new and innovative games for the market. The course serves to introduce the various aspects of game studies. This systems course will cover a brief history and philosophy of games, basic game theory, game mechanics, probability, game conceptualization, game design process, iterative design, game industry, and gamification. Further, the student will experience the practical elements of game development including game conceptualization, prototyping, playtesting, and production through a final group project of creating a game. The theories and processes discussed in this course apply to digital and tabletop game design.
- information systems design, sys394 s15
The course focuses on the physical design and construction phases of the system development life cycle. Our goal is to implement a working prototype of the system defined and analyzed in SYS 390 (ISA) as a database-backed web application. We will cover web and database programming, advanced SQL topics, software project management practices, system architecture, and related web technology. The course comprises two hands-on, lab-heavy segments. - For approximately the first five weeks, we will focus on the basics of developing a database-backed web application. This portion of the course is designed to provide everyone in the class with the knowledge and skills necessary to understand and construct a non-trivial web application. We will cover salient topics in class, and you will complete a series of lab exercises that give you practice with the topic of the day. - For the remaining ten weeks of the course, you will be working on constructing a prototype application that implements the requirements you gathered in ISA as reflected in your Systems Requirements Specification (ISA).
- computer graphics, cosc77 s14, s13, f11
The Computer Graphics course will introduce students to the mathematical foundations of modeling and rendering (drawing) three-dimensional scenes. Topics include digital image representation, geometrical transformations, curves and surfaces, illumination and shading models, and visible surface algorithms. Coursework will consist of five short programming assignments.
- computer literacy, cs100 s09
CS100 Computer Literacy is a two credit hours course introducing the student to a variety of software programs, emphasizing the important concepts involved in each and giving the student the opportunity to develop a fundamental base for most computer-related tasks. Topics covered by this class are the historical development, ethical issues, social implications, components of a computing system, and commonly used software. It will look at several popular software packages, such as a word processor, a spreadsheet program, a database management system, presentation graphics, a browser for the Internet – in short, the types of software one is likely to need in the information age. The course will consist of a lecture and a lab. The lectures and lab sessions may sometimes function independently of each other.
excel training for faculty and staff dec08
various computer literacy classes 2007–2008
- microsoft word, excel, powerpoint