the home of Peter Katsanis


Welcome to my home page. Take a look around and tell me what you think.

    Graduate Courses in Progress

    Graduate Courses Completed

    Under Graduate CS Courses


 

Graduate Courses in Progress



CSC 9020. Independent Study 1 -- Automated Grading and Submission System (AGSS)

My work is being done under the supervision of Professor Najib Nadi.

I can't say much here as my independent study is currently a work in progress. Briefly, the main objective of this research will be to create a fully web-based secure project grading and submission system. Currently, the products [I've seen] on the market accomplish either one or the other of these tasks, but not both. Because the process of grading student source code submissions is often tedious and time consuming, developing tools to assist teacher's assistants and professors is quite valuable. It is also worth mentioning that because upper level projects often become very complex and deal with other things than the standard "black box" program used in many introductory courses, they will likely need to be graded by hand. Thus, the focus of the grading segment can be limited to a few basic questions (1) is the submission on time?; (2) does the source code compile?; (3) and if request by the professor or assistant, test the program with a simple data set, and verify correctness. This information would then be made available for printing and reviewing via AGSS.

Currently, I am implementing the submission portion of this project via servlets. The grading centric sections will likely use JNI to facilitate the use of C/C++ to handle project evaluation (this is somewhat CPU intensive).


Graduate Courses (completed)



CSC 8301. Design and Analysis of Algorithms.

Fundamental strategies for algorithm; mathematical and empirical techniques for analysis of nonrecursive and recursive algorithms, with applications such as sorting searching, string processing and graphs; NP-complete problems and approximation algorithms.

CSC 8310. Linguistics of Programming Languages.

Organization, characteristics, and design principles of programming languages; the theory and practice of several programming paradigms, for example, sequential, functional, object-oriented, and logic programming.

CSC 8400. Computer Organization.

Evolution of computer architectures; system models at the gate level, the register level and the processor level; processor structure: addressing methods, instruction sets, RISCs and ALU design; control structure: hardware control and microprogrammed control; memory organization: memory technology, virtual memory and high speed memories; system architectures: communication; input/output systems and operating systems; parallel processing; pipeline processors and multiprocessors.

CSC 8410. Operating System Concepts.

Principles and techniques required for creating and understanding operating systems, including the areas of: system services, concurrent programming, process and resource control; deadlock detection, recovery, and protection; memory management; file systems; and protection and security.

CSC 8510. Theory of Computability.

Turing machines: definitions, generation, composition, minimalization, and Universal Turing machines. Recursive functions, computability, and recursively enumerable sets. Notions of computational complexity and applications.

CSC 8530. Distributed Systems.

An introduction to distributed systems; distributed system architecture and design goals; networks and distributed protocols; distributed/network operating systems, including distributed resource control and management, concurrency and interprocess communication; remote procedure calling; client/server techniques and issues; reliability of distributed systems; security and authentication.

CSC 8700. System Programming in UNIX and C.

The UNIX operating system: command interpreters, shell programming, process structure, file system, and utilities [like grep, sed, awk , and perl]. C programming: file processing, libraries, program environment, and system calls.

CSC 8710. Advanced System Programming in UNIX and C.

UNIX operating system internals: an in-depth look at the kernel algorithms and data structures for the file subsystem, process subsystem, memory management, process scheduling and inter process communication. More UNIX commands and some programming tools such as make, prof, sccs, rcs, and advanced shell features such as traps and shell functions. Advanced C programming using more libraries (cursess, plot, ...) and system calls.

CSC 9010. Design and Implementation of Computer Games [with Java].

This course will be team-oriented and project-based. Each team will design and implement one original computer game of their own choosing. Prior knowledge of Java will be required; lectures will introduce several advanced Java topics of special interest to games programming. Topics covered include: Design patterns applicable to games (using basic UML); Game balance and tuning; Sprite-based animation techniques; Graphics and graphics programming; Networked games; High-score servers; Use of copyrighted and non-copyrighted materials.




Under Graduate Computer Science Courses



120. Computer Science I.

An introduction to the discipline with emphasis on algorithm design and program development. The problem solving activity of developing algorithms is heavily stressed. Other topics include computer organization, computer usage and applications, programming languages, software engineering, data structures, and operating systems. Required for the major or minor in CS. Recommended for students intending to develop or maintain software in their own area of concentration.(I.C.)

121. Computer Science II.

A continuation of Computer Science I with emphasis on data and procedural abstraction. A study of basic organizations of instructions and data as realized in both hardware design and software development. Topics include encoding schemes for instructions and data, representative machine architectures, data representations in computer memory and in high-level languages. Prerequisite: CS 120.

222. Computer Organization and Machine Level Programming.

An introduction to classical internal organization of computers with emphasis on low-level (machine language and assembly language) programming. Topics covered include performance measures, low-level data representations, instruction sets, implementation of data path and control, memory organization and cache, and I/O organization. Laboratory work stresses low-level algorithm implementation on RISC processors. Prerequisite: CS 121.

244. Data Structures and Analysis of Algorithms.

An examination of issues dealing with static and dynamic aggregates of data. Topics covered include logical characteristics of various data organizations, storage structures implementing structured data, design and implementation of algorithms to manipulate such storage structures, and classical applications of data structures. Representative data structures include stacks, queues, ordered trees, binary trees, and graphs. Both contiguous and linked storage implementations are considered and performance issues discussed. Prerequisite: CS 121 and Mathematics 170 (or 106-166).

256. Principles of Programming Languages.

A study of features of programming languages and of the methods used to specify and translate them. Topics covered include block structure, naming, procedure invocations and parameter passage, data types, data accessing, syntactic analysis, and correspondence of source language and object language constructs. Prerequisite: CS 244.

CSc271 (Lehigh) Programming in C and the Unix Environment.

Catalog Data: C language syntax and structure. C programming techniques. Emphasis on structured design for medium to large programs. Unix operating system fundamentals. Unix utilities for program development, text processing, and communications.

Textbook: Horspool/Nigel, The Berkeley UNIX Environment. 2nd Edition, Prentice-Hall.

Goals: As an advanced course in programming, CSC 271 is designed to give students exposure to the C programming language, the Unix operating system, and large program structure and design.

Topics/Class Utilization:

  1. C programming (18 classes):Syntax, Compiling, linking, libraries, Strings, arrays, pointers, Input/output, Debugging, Efficiency, portability, hardware utilization
  2. Unix concepts. (14 classes): Basic system usage, including text editing., Shell programming. Input/output (redirection, pipes), Multi- processing., Standard utilities
  3. Program development (7 classes): Large program design., Programming utilities
  4. Miscellaneous (3 classes): Communications, Tests

320. Networking and Distributed Computing.

An introduction to the physical and architectural elements of communication networks. A review of network architecture and communication protocols with emphasis on the standard Internet TCP/IP and IPv6 protocols as well as LAN protocols such as Ethernet and FDDI. Discussions of tools which allow the design, measurement and operation of networks. Topics in distributed computing will include concurrency and synchronization, programming language constructs for parallel computing, and techniques such as remote procedure calls and shared memory models. Prerequisites: CS 222 and 244.

333. Operating Systems and Computer Architecture.

A survey of operating systems issues involving both hardware and software components. Topics covered include processors, interrupts, I/O devices, process management, concurrency, memory management, file systems, and system organization. Prerequisites: CS 222 and 244.

360. Database Analysis and Design. (Allentown College)

An introduction to applications program development in a database environment with emphasis on loading, modifying, and querying a database using a high-level language. The course will cover data analysis and design, implementation, and administration of databases and discussion of network, relational, and hierarchial models. Prerequisites: CS 120-121 and CS 244.

334. System Design and Implementation.

A project-oriented study of the ideas and techniques required to design and implement a computer-based system. Topics include project organization, interface design, documentation, and verification. Prerequisites: CS 222, 244, and 256.

364. Foundations of Computing.

A study of the theoretical aspects of computing. Topics covered include formal languages (regular, context-free, and context-sensitive grammars), automata (finite state machines, push-down automata, and Turing machines), limitations of the respective computational models, and unsolvable problems. Prerequisite: CS 256

 
Top