Teaching

CSCE 4623 — Mobile Programming

Mobile devices are the predominant form of computing. In 2016, mobile computing represented 65% of all internet digital media time. The trend away from the desktop computing environment is clear. The importance of teaching our students to develop software specific to mobile computing cannot be understated. This course serves as an introduction to development on mobile devices. The course is taught using the Android platform as a vehicle to introduce and teach mobile development components including: user interface, localization, sensors, operating systems, data management, cloud services, context-awareness, and application testing and verification. The course includes two written examinations, four programming projects, and a final project.

Class Webpage (most recent):
Fall 2022 — (Student Evaluation: 4.82/5)

Final Projects:
Fall 2017 Final Projects
Fall 2019 Final Projects
Fall 2020 Final Projects
Fall 2021 Final Projects

CSCE 4/5013 — Wearable and Ubiquitous Computing

Technological miniaturization and advances in radio frequency technology have created a computing environment that has enabled growth in the number and variety of non-traditional computing systems. Machine-to-machine communication and the Internet of Things (IoT) represent a movement of computation away from single-user systems tethered to physical locations. This course will introduce wearable and ubiquitous computing paradigms with emphasis on the engineering and development. Three key themes that will be taught during this course the systems and infrastructures which compose IoT and wearable systems, the devices and techniques for gathering data and communicating with the user, and the applications of these technologies including the user experience. The course includes a written examination, three programming projects, weekly readings, and a final project.

Class Webpage (Most Recent): Spring 2022 — (Student Evaluation: 4.65/5)

Final Projects:
Spring 2018 Final Projects
Spring 2019 Final Projects
Fall 2020 Final Projects
Spring 2022 Final Projects

CSCE 4114 — Embedded Systems

The architecture, software, and hardware of embedded systems. Involves a mixture of hardware and software for the control of a system (including electrical, electro-mechanical, and electro-chemical systems). They are found in a variety of products including cars, VCRs, HDTVs, cell phones, pacemakers, spacecraft, missile systems, and robots for factory automation.Embedded systems have become more prevalent in recent years due to the Internet of Things. Billions of connected devices communicate with each other every day with no direct intervention from humans for computation. This course will introduce Embedded Systems — including theoretical and hands-on instruction in the development, programming, and evaluation of systems.

Class Webpage (Most Recent): Fall 2019 — (Student Evaluation: 4.75/5)

CSCE 2214 — Computer Organization

Students will study the design and implementation of a standard Reduced Instruction Set Computer (RISC) and memory hierarchy. Detailed analysis of instruction set encodings and efficient pipelined implementation of the instruction set including data and control hazards introduced by pipelining instruction execution. The Laboratory component allows students to apply classroom theory by designing and implementing a complete working pipelined CPU, and evaluating cache organizations through a simulator.

Class Webpage (Most Recent): Spring 2021 — (Student Evaluation: Course — 4.65/5)

CSCE 5013 — Embedded System Security Organization

Developing and maintaining security in systems is critical in our modern interconnected cyberinfrastructure. Securing embedded devices adds additional attack surfaces including fewer guarantees on physical access security, infrequent software/firmware updates, and constrained physical resources. These constraints require that embedded systems developers be cognizant of best practices in security across the entire development process. Failure to do so can at best render a system useless, and at worst cause significant harm. In this course, we will learn about the attack surfaces that are different or more significant in embedded development, identify development techniques to remove or mitigate these attacks, and investigate emerging and future avenues for improving security in embedded systems.

Class Webpage (Most Recent): Spring 2022 — (Student Evaluation: 4.89/5)