- ICS111: Introduction to Computer Science I
- Overview of computer science, writing programs.  (Programming language: Java)
Semesters (9): 
Fall 2007 (001, 
  002), 
Spring 2008,
Fall 2008,
Spring 2009,
Fall 2009,
Spring 2010,
Fall 2010,
Spring 2011,
Fall 2011.
 
- ICS211: Introduction to Computer Science II
- Algorithms and their complexity, introduction to software engineering, data structures, searching and sorting algorithms, numerical errors. (Programming language: Java)
Semesters (4): 
Fall 2003 (001, 003), 
Fall 2004, 
Spring 2005,
Fall 2006
  (001, 
  002).
 
- ICS212: Program Structure
- Program organization paradigms, programming environments, implementation of a module from specifications. (Programming languages: C, C++)
Semesters (4): 
Spring 2004,
Fall 2005,
Spring 2006, 
Spring 2012.
 
- ICS312: Machine-Level and Systems Programming
- Machine organization, machine instructions, addressing modes, assembler language, subroutine linkage, linking to higher-level languages, interface to operating systems, introduction to assemblers, loaders and compilers.  Grammars, regular expressions, finite automata.  (Programming language: MASM assembler)
Semesters (2): 
Spring 2006,
Spring 2007.
 
- ICS313: Programming Language Theory
- Syntax, semantics, control structures, variable binding and scopes, data and control abstractions. Programming in functional and logic programming styles.   (Programming languages: Common Lisp, Prolog, Perl)
Semesters (2): 
Fall 2002, Spring 2012.
 
- ICS321: Data Storage and Retrieval
- Data storage devices, timing and capacity, programming for files, hashed and indexed files, introduction to relational database systems.  (Oracle DB)
Semesters (1): 
Spring 2003.
 
- ICS461: Artificial Intelligence
-  Survey of artificial intelligence: natural language processing, vision and robotics, expert systems. Emphasis on fundamental concepts: search, planning, and problem solving, logic, knowledge representation.
Semesters (1): 
Fall 2011.