Teaching
Current and Previous Courses Taught at NCSU
- CSC 111 Introduction to Computing: Python
CSC 111 is a required course for students majoring in Civil, Construction, and Environmental Engineering at NCSU. However, students from other majors may also take the course, with priority given to those whose curriculum includes CSC 111 as one of their options, such as Statistics majors. The course serves as an introduction to computational problem-solving using Python. The course places emphasis on meticulous development of Python programs based on specifications, proper programming style, accurate documentation, and appropriate utilization of control structures and data types. The students will be given ample practice in writing Python programs in engineering applications.
[Fall 2020 (175 Students), Spring 2021 (129 Students), Fall 2021 (138 Students), Spring 2022 (90 Students), Fall 2022 (142 Students), Spring 2023 (93 Students), Fall 2023 (188 Students), Spring 2024 (69 Students), Fall 2024 (80 Students), Spring 2025 (86 Students), Fall 2025] - CSC 116 Introduction to Computing: Java
CSC 116 is a required course for Computer Science majors at NCSU. The course serves as an introduction to computational problem-solving using Java. Emphasis is placed on algorithm development and problem-solving, as well as the careful and methodical development of Java applications from specifications. Students will also learn proper programming style, thorough documentation, and software testing. Key topics include control structures, data types, classes and methods, data abstraction, and the principles of object-oriented programming and design.
[Fall 2025] - CSC 246 Concepts and Facilities of Operating Systems for Computer Scientists
CSC 246 is a required course for Computer Science majors at NCSU aimed at providing an in-depth understanding of the design and operation of operating systems along with the range of services they offer. Through this course, students will gain insight into the execution environment that their programs operate in and learn how to utilize the underlying hardware effectively. The course covers several topics, including Processes and Threads, CPU Scheduling, Synchronization, Memory Management, GPU Programming, Networking and Distributed Systems, File Systems, as well as Protection and Security.
[Spring 2021 (77 Students), Fall 2021 (94 Students), Spring 2022 (79 Students), Fall 2022 (104 Students), Spring 2023 (109 Students), Fall 2023 (120 Students), Spring 2024 (84 Students), Fall 2024 (2 Sections, 78 + 80 Students), Spring 2025 (98 Students)] - E 115 Introduction to Computing Environments
E 115 is a required introductory course for all incoming College of Engineering students at NCSU. This hybrid format course equips students with essential skills and knowledge required to effectively use the computing and technology resources available in the College of Engineering. The course covers topics such as accessing and using campus-based computing resources and applications like campus clusters in Linux and Google tools. Students will also learn about ethics, professionalism in the use of computing resources, and get an introduction to web development and other campus resources. For further information, please refer to this link.
[Fall 2020 (2 Sections, 705 + 818 Students, Co-taught with Ms. ToniAnn Marini), Spring 2021 (2 Sections, 368 + 354 Students), Fall 2021 (2 Sections, 647 + 792 Students), Spring 2022 (2 Sections, 400 + 446 Students), Fall 2022 (2 Sections, 739 + 786 Students), Spring 2023 (2 Sections, 476 + 567 Students), Fall 2023 (2 Sections, 646 + 776 Students, Co-taught with Dr. Abida Haque), Spring 2024 (2 Sections, 477 + 594 Students, Co-taught with Drs. Abida Haque, Caio Batista de Melo)]
Previous Courses Taught at W&M
- CSCI 141 Computational Problem Solving
- CSCI 241 Data Structures
- CSCI 243 Discrete Structures of CSCI
CSCI 141 is an introductory programming course in Python designed for both computer science majors and non-majors at W&M. The course aims to cover fundamental topics such as expressions, functions, conditionals, and loops, as well as object-oriented programming using classes. In addition, students will learn about built-in data structures in Python, including lists, tuples, and dictionaries, as well as how to develop graphics applications using PyQt5. By the end of this course, students will have acquired a solid foundation in Python programming, allowing them to pursue more advanced topics in computer science.
[Spring 2018, Spring 2019, Fall 2019, Spring 2020]
CSCI 241 is a required course for computer science majors at W&M that builds upon fundamental concepts introduced in previous coursework. The course aims to provide a deeper understanding of data abstraction, data structures, and data representation. Topics covered in the course include arrays, linked lists, stacks, queues, trees, balanced trees, priority queues, hashing, and their respective applications. By the end of this course, students will have a solid foundation in data structures and their use in solving complex computing problems.
[Fall 2016, Spring 2017, Fall 2017]
CSCI 243 is a computer science course designed for W&M majors that focuses on introducing the theoretical foundations of the discipline. The course covers a wide range of topics, including logic, proof methods, sets, functions, sequences, algorithm complexity, induction, recursion, discrete probability, trees, and graphs. By exploring these fundamental concepts, students will gain a deeper understanding of the principles underlying computer science and be better equipped to tackle complex computing problems.
[Fall 2015, Spring 2016, Summer 2016, Fall 2016, Spring 2017, Fall 2017, Spring 2018]