teaching
below are my philosophy on grading and a list of the courses that i have taught.
grading #
philosophy
assignments are broken down into individually graded items. any item to be graded will be scored on the 3-point scale shown below (zero-based).
pts | grade | description |
---|---|---|
\(3\) | A |
perfect solution, meets every requirement and expectation |
\(2\) | C |
solution is only partially correct |
\(1\) | D- |
solution submitted, but clearly not correct |
\(0\) | F |
nothing of value was submitted |
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.
\((16T,17T]\) | A- | \((17T, 18T]\) | A | ||||
\((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.
interactive computation #
total score: | |||
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 |
Electronics Usage #
Research shows that computer/tablet/phone usage during class, even for taking notes, has a negative impact on retention, processing, and performance. Therefore, except for pre-generated materials such as presentations, computer use during lectures is disallowed, even if computers are accessible in the room. Note that this policy only applies to times of lecturing and not during lab time or certain participation activities.
An exception may be granted by writing a 1-page paper arguing why you choose to use an electronic device in the classroom. This paper must present a reasonable argument against studies like the one cited in this recent NPR article and this Business Insider article. Important: the exception comes with the caveat that you must sit where you will not disturb others, and that you may not use the device to check e-mail, engage in social networking, surf the web, play video games, or do any other activity not directly relevant to current classroom activity.
taylor university
cos courses
- interactive webpage design, cos143 j16
-
A study of how to deliver interactive webpages through a web browser. Students will learn to represent the data structurally with HTML, the presentation with CSS, and the functionality with Javascript. Students will explore good design strategies that promote useful webpages. In order to deliver interactive sites, the students will utilize remote scripting (AJAX) to connect with existing server functionality to receive XML or JSON data for page updates. Modern web technologies including HTML5, CSS3, DOM manipulation, etc. will be explored.
- intro to game engine design, cos170 su19, su18, su17
-
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 f24, f23, f22, f20, f19, 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 f23, f22, f19, 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 s24, s20, 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 f25, f23, f22, f20, f19, f18, f17, f16, f15, f14
-
This course provides you with an understanding of the basic concepts of modern computer graphics. The emphasis of this course is on techniques and image production as much as algorithms and data structures. The course includes traditional areas of computer graphics such as 2D graphics primitives, 3D algorithms and projections, scene graphs, modeling, and rendering. 3D and interactive programming will be discussed and implemented. The WebGL programming API (based on OpenGL and OpenGL ES) will be used throughout the course. Programming will be done in the HTML5 environment using Javascript. The programming shader model will be emphasized.
- computer vision, cos351 s20, s18, s16
-
A study of the fundamental concepts of digital image acquisition, manipulation, enhancement, representation, analysis, and understanding.
- 3d animation, cos370 s24
-
This undergraduate course in 3D animation introduces students to animation principles and techniques essential for creating dynamic and visually captivating 3D animations. Animation topics include basic motion and timing, squash and stretch, anticipation, and weight. Additional topics such as basic camera fundamentals and project management will be introduced. Blender software will be used to create a 3D animated short film.
- language structures, cos382 s23, s21, s19, 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 several independent
-
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.
- game engine architecture, cos486 s23, s21, s19
-
Video game development combines many diverse subject matters, from the technical computer science to the artistic of content creation. Through this course, we will study the technical side of game development, focusing on game engine architecture. The student will understand the key systems involved in nearly every modern gaming engine, including their goals and constraints, and will write a video game engine from scratch as a term project.
- computer science senior capstone, cos491 f24, f23, f22
-
A survey of topics useful for graduates of the department, but not covered by other courses. The emphasis is on non-technical issues such as making a budget, finding a church, balancing career and family, etc. The course is conducted as a trip off-campus to further strengthen relationships with the department.
sys courses
- principles in human-computer interaction, sys214 s19, 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).
dartmouth college
- principles of programming languages, cosc059 su24
-
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.
- computer graphics, coscx77 su24, 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.
tabor college
courses
- 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.
workshops
excel training for faculty and staff dec08
sorb computers, llc
various computer literacy classes 2007–2008
- microsoft word, excel, powerpoint