Colby College (2021-Present)
Title: Lecturer of Computer ScienceCS 152: Computational Thinking: Scientific Applications (5 semesters)
An introduction to computational thinking: how we can describe and solve problems using a computer. Using the Python language, students will learn how to write algorithms, manipulate information, and design programs. They will learn about abstraction, how to divide and organize a process into appropriate components, how to describe processes in a computer language, and how to analyze and understand the behavior of their programs. The projects focus on: (1) reading, writing, managing, and analyzing data; (2) modeling ecological systems using population and agent-based approaches; and (3) simulating physical systems with gravity and collisions. [Colby College Computer Science Department Course Catalog]
CS 231 Data Structures and Algorithms (3 semesters)
Focuses on the common structures used to store data and the standard algorithms for manipulating them. Standard data structures include lists, stacks, queues, trees, heaps, hash tables, and graphs. Standard algorithms include searching, sorting, and traversals. Along with implementation details, students will learn to analyze the time and space efficiency of algorithms and how to select appropriate data structures and algorithms for a specific application. In homework, labs, and programming projects, students will implement their own data structures and make use of existing libraries to solve a variety of computational problems. [Colby College Computer Science Department Course Catalog]
Bowdoin College (2015-2021)
Title: Visiting Assistant ProfessorCSCI 1055 The Digital World (1 semester)
Explores the means and the results of the digital revolution. Questions how information is coded and stored; how it can be safeguarded. Considers how the widespread coding and transmission of data impacts issues such as privacy and intellectual property. Examines these topics through the study and use of techniques from computer science, such as programming and cryptography, and human-subject research. [Bowdoin College Computer Science Department Course Catalog]
CSCI 1101 Introduction to Computer Science (3 semesters)
What is computer science, what are its applications in other disciplines, and what is its impact in society? A step-by-step introduction to the art of problem solving using the computer and programming. Provides a broad introduction to computer science and programming through real-life applications. Weekly labs provide experiments with the concepts presented in class. Assumes no prior knowledge of computers or programming. [Bowdoin College Computer Science Department Course Catalog]
CSCI1103/DCS1300 (1 semester)
Intended for students with some programming experience, but not enough to move directly into Data Structures. An accelerated introduction to the art of problem solving using the computer and the Python programming language. Weekly labs and programming assignments focus on "big data" and its impact on the world. [Bowdoin College Computer Science Department Course Catalog]
CSCI 2101 Data Structures (11 semesters)
Solving complex algorithmic problems requires the use of appropriate data structures such as stacks, priority queues, search trees, dictionaries, hash tables, and graphs. It also requires the ability to measure the efficiency of operations such as sorting and searching in order to make effective choices among alternative solutions. Offers a study of data structures, their efficiency, and their use in solving computational problems. Laboratory exercises provide an opportunity to design and implement these structures. [Bowdoin College Computer Science Department Course Catalog]
CSCI 2330 Foundations of Computer Systems (1 semester)
A broad introduction to how modern computer systems execute programs, store information, and communicate. Examines the hardware and software components required to go from a program expressed in a high-level programming language like C to the computer running the program. Topics include concepts of program compilation and assembly, machine code, data representation and computer arithmetic, basic microarchitecture, the memory hierarchy, processes, and system-level I/O. Regular, programming-intensive projects provide hands-on experience with the key components of computer systems. [Bowdoin College Computer Science Department Course Catalog]
CSCI 3300 Computer Networks (7 semesters)
Computer networks are everywhere: e-mail, the Web, wireless networks, mobile devices, networked sensors, satellite communication, peer-to-peer applications. New applications based on networks appear constantly. Provides an introduction to the exciting field of computer networks by taking a top-down approach. Begins with an overview of computer networks, hardware and software components, the Internet, and the concept of protocols and layered service. Delves into details about the four main layers making up the computer network stack: Application (HTTP, FTP, e-mail, DNS, peer-to-peer applications and socket programming), Transport (TCP, UDP, and congestion control), Network (IP, routers, and routing algorithms) and Link Layer and Local Area Networks (medium access control, switches, and Ethernet). Also covers wireless and mobile networks (CDMA, Wi-Fi, cellular internet access, mobile IP, and managing mobility). [Bowdoin College Computer Science Department Course Catalog]
City University of New York (2001-2013)
Title: Adjunct LecturerQueens College
CSCI 240 Computer Organization and Assembly Language (3 semesters)
Undergraduate level course covering the principles of computer design and implementation. Students learn the basics of computer architecture and low-level programming. Topics include instruction set architecture and register-transfer level execution; storage formats; binary data encoding; bus structures; assembly language. MIPS programming language selected as implementation language for student projects.
CSCI 348 Data Communications (1 semester)
Undergraduate level course covering topic areas in computer communications and networks. Students learn the foundations of architecture, design and management of computer networks. Topics include circuit types, data codes, synchronous and asynchronous transmission; protocols (OSI, TCP/IP); modems, multiplexors, and other network hardware; error correction and encryption; voice and data switching: local area networks, ISDN and packet switching. Java programming language selected as implementation language for student projects.
CSCI 744 Computer Architecture and Networks (1 semester)
Graduate level course covering topics in advanced analysis of computer architecture. Course builds on topics covered in CSCI 240 with more detailed and quantitative coverage. Topics include comparison of instruction set architectures (RISC, CISC, stack, and VLIW); the memory hierarchy, including cache design and performance issues, shared memory organizations, and bus structures. Models of parallel computing, including multiprocessors, multicomputers, multivector, SIMD, PRAM, and MIMD architectures. Pipelining models, including clocking and timing, instruction pipeline design, arithmetic pipeline design, and superscalar pipelining.
CSCI 748 Computer Networks (4 semesters)
Graduate level course covering data communication and computer networks, including network hardware and software, as well as reference models. The OSI and the Internet (TCP/IP) network models are discussed. The course covers each network layer in detail moving from Physical layer to Application layer. Other topics include network security, encoding digital and analog signals, transmission media, protocols, circuit, packet, message, switching techniques. C and Java programming languages selected as the implementation languages for course projects.
NYC College of Technology
CST 3613 Advanced Object Oriented Programming in Java (2 semesters)
Second course in the three-course Object-Oriented Programming Module. Undergraduate level course intended to enhance students’ understanding of object-oriented programming and to strengthen students’ programming ability to develop advanced windowed applications. Additional focus on Java database connectivity. In this course, students will learn to build applications with advanced GUI components such as, menus, toolbar, dialogs and JTable, etc. and to learn how to connect the application with a database via SQL.
CST 4703 Unix Socket Programming (1 semester)
Undergraduate level course covering UNIX communications and networking. Topics include networking basics as applies to the UNIX operating systems, network file systems, modem and high-speed communications, UNIX communications programs, UUCP utilities, remote log-in programs, file transferring using FTP, the IP network addressing, the TCP/IP protocol stack and SNMP. In addition, students will be introduced to the Internet, electronic mail, telnet, gopher, Usenet, the World Wide Web and other on-line services. C programming language selected as implementation language for student projects.
CST 4713 Application Architecture in Java (1 Semester)
Undergraduate level course introducing students to the role of Servlets and Java Server Pages (JSP). It provides instruction in building web pages dynamically, organizing projects into web applications, and deploying these applications using a web server, such as Apache Tomcat. The course presents role of Servlets as middleware in an N-tiered design structure (acting as a middle layer between requests coming from Web browsers or other HTTP clients and databases or applications on the HTTP server). The conceptual frameworks of the Servlet life cycle, handling client requests, generating server responses, handling cookies, session tracking, the proper uses of JSPs, and the integration of Servlets and JSPs using the MVC (model-view-controller) architecture are all discussed. Hands-on laboratory exercises reinforce the material presented in the lectures and enable students to develop related programming skills.
Baruch College
CIS 9365 Operating Systems Concepts (1 semester)
Graduate level course providing an in-depth study of the concepts underlying modern computer operating systems. Facilities and services provided by operating systems and their purpose and use in business information system environments are covered. Students learn how these facilities are incorporated into, and made available by, various types of operating systems, on a variety of computer hardware platforms. Hands-on system administration and programming exercises are used to support operating systems theory. Topics covered include operating system components, multiprogramming, multiprocessing, and multitasking system; virtual storage; interactive and batch processing; and file management facilities.
CIS 9771 Object-Oriented Programming II with Java (1 semester)
Special Topics elective at the graduate level representing the second course in a two-course sequence in object-oriented programming. This course covers advanced programming constructs needed to implement object hierarchies. Topics include Classes and Objects, OOP Inheritance and Polymorphism, Searching and sorting and Data Structures, File and Streams and Exception handling. Projects are designed and implemented illustrating the core concepts presented in the course.
Brooklyn College
CISC 1110 Introduction to Programming Using C (1 semester)
Undergraduate level course introducing students to programming as well as algorithm design and computers. Course covers writing, debugging, and testing programs; Loops and conditional control structures; Functions and parameter passing. Arrays, strings and simple memory management. Programming applications selected from various disciplines. History and basic concepts of computer science.
New York University (2001-2011)
School of Continuing and Professional Studies
Department of Management and Information Technology
Title: Adjunct Instructor
Java Environment Prep (9 semesters)
A two day, hands-on workshop which prepares students entering the Java Certificate sequence. In this course students bring their laptops to NYU where all necessary Java software is installed and configured. This course was designed by myself and other instructors for the purpose of streamlining the main Java sequence and assuring all instructors that their entering students were prepared to begin programming on the first class meeting.
Java Express (2 semesters)
Course is designed for individuals with previous experience in programming with C++, or a non-object-oriented programming language. Students learn about the similarities and differences between procedural and object-oriented languages as well the specifics of the Java Virtual Machine, Java APIs and Integrated Development Environment commonly used in Java development. Course prepares students to enter the SCPS Java Certificate sequence.
Introduction to Programming Using Java (8 semesters)
First of four required courses in the Java Programming Certificate sequence. Course covers the fundamentals of object-oriented programming and the Java programming language. Students learn programming concepts from data types, variable declaration, flow control structures, file management, exception handling, and graphical user interfaces. Concepts are reinforced with hands-on exercises and a final project. Course taught in laboratory setting.
Java I (2 semesters)
Course builds on prior programming experience in any language and provides a detailed introductions our knowledge with object-oriented programming in Java. Topics covered include abstraction, encapsulation, inheritance, polymorphism, interfaces, packages, garbage collection, exception handling, input/output, multithreaded programming, networking, utility classes, AWT, Swing, Applet, Java architecture, security, JDBC, and other features. Student projects are significantly more complex than those found in Introduction to Programming Using Java.
Java Summer Intensive (1 semester)
Ten-day immersion course in Java technology. Typical student is coming from a project management background with a need for rapidly acquiring an understanding of Java technologies. The success of this course lies in the ability of the instructor to alternate between detailed coverage and high-level presentation in order to maintain forward momentum in the class. Motivated students are able are able to acquire solid skills in Java technologies during this two-week intensive without having any prior programming experience.
Introduction to C Programming (1 semester)
This course provides an introduction to the fundamentals of the C programming language for students with little or no experience. Learn to write basic C programs using a variety of programming constructs, including loops, statements, and arrays. Gain experience creating, compiling, linking, executing, and debugging programs. Develop an understanding of how data can be stored and retrieved from memory, and how to use standard C library functions. This course lays the foundation for further study in C or C++ programming.