EGS 6055: Foundations of Engineering and Computing Teaching and Learning

EGS 6055: Course Description

Having taken this course as a student, I learned and applied principles of inclusive, learner-centered, and evidence-based pedagogy and assessment in engineering and computer science learning environments. The course leveraged a human-centered design approach to develop us as educational designers and supported the integration of learning theory and research on pedagogy and assessment into our instructional practice. Through a combination of research literature and practical application, we gained insights into how students in engineering and computer science learn, enabling us to craft learning objectives, align assessment methods with objectives, and iterate on our educational designs to create inclusive and learner-centered environments.


Final Portfolio Assignment

For the Final Teaching Portfolio assignment, I assembled an electronic portfolio of my work from the semester. This included the revised and final versions of my learning theory and teaching philosophy, as well as a final rationale for my teaching design encompassing learning objectives and activity structures. Additionally, I included plans, examples, artifacts, outcomes, and feedback from my teaching plan and presentation, concluding with a reflection on my teaching outcomes and opportunities for continual improvement.


Learning and Teaching Philosophies

I have integrated the Learning and Teaching Philosophies cultivated during this course into my professional curriculum vitae, accessible via the following link: Faculty CV.


Lesson

Below is the lesson I prepared and delivered as a component of this course

Circuit Design and Analysis: Full-Adder

Overview

Software Engineers must be able to design, construct, test and maintain software across a wide variety of applications, platforms, and industries (Software Engineering, 2024a). A Software Engineering degree program combines topics across Computer Science (CS) and Software Engineering (SE) disciplines (Software Engineering (BS), 2024b). CS curriculum includes object-oriented programming, data structures and algorithms, operating systems, and computer organization and networking (Software Engineering (BS), 2024b). SE curriculum includes software engineering fundamentals, software requirements engineering, software architecture and design, software testing, and team-oriented senior software engineering projects (Software Engineering (BS), 2024b).

Course CDA 3200 Digital Systems & Architecture is one of two courses that fulfils the Accreditation Board for Engineering and Technology (ABET) requirement that the SE program provides “exposure to computer architecture and organization” (Criteria for Accrediting Computing Programs, 2020 – 2021, 2021). The course examines the micro-architecture level implementation of a processor’s instruction set architecture (ISA) through the design of logic circuits and data pathways representing physical digital electronic devices (Bourque & Fairley, 2014).

This course relies on a constructivism approach to developing a learning environment that focuses on building content knowledge through activities over memorization (Moreno, et. al., 2007). Students will be presented with individual problems to solve, and work in small groups to develop a circuit design that satisfies required inputs and outputs at the individual bit level. The instructor and teaching assistants will act as resources and advisors throughout each lesson.

The complexity of digital architecture and the speed of modern processors makes it difficult to conceptualize and assimilate how individual logic circuits combine in digital pathways to perform specific functions (Moreno, et. al., 2007). This course will rely on a combination of virtual and hands-on simulators that will allow students working in small groups to build and test individual logic circuits.

Context

Cognitive learning in the design and analysis of a logic circuit applies to the acquisition of foundational knowledge of logic gates, Boolean algebra, truth tables and logic expressions. The full-adder circuit breaks down the arithmetic operators and instructions of a high-level programming language to binary arithmetic and the basic building block of the processor’s arithmetic logic unit (ALU).

Target Learner

Undergraduate software engineering and computing science students will have taken COP 2006 Programming I and PHY 2048 General Physics I prior to taking CDA 3200 Digital Systems & Architecture. The following topics will have been covered in the course prior to this lesson: number systems, logic gates, truth-tables, and logic expressions, Boolean algebra, and circuit analysis. Students are first introduced to the 2-1 multiplexer circuit to practice circuit analysis. This lesson builds on the analysis of circuits while developing the first building-block that will be expanded on to design an ALU. The multiplexer will be combined with the ALU later in the course as we develop data-paths to and from the controller, memory, and the ALU. Students will begin to see their first physical digital logic-circuits representing programming language instructions and operators.

Learning Objectives

Design and Analysis of a Three-Bit Full-Adder:

  • Understand the basic principles of a full-adder circuit.
  • Learn the architecture of a three-bit full-adder.
  • Practice designing a three-bit full-adder circuit.
  • Analyze the functionality and performance of the designed circuit.
  • Apply the concepts of Boolean algebra and logic gates to optimize the full-adder design.
  • Explore real-world applications of full-adder circuits.

Lesson Plan

Schedule

  • Review lesson objectives (1min)
  • Review binary addition (2min)
  • Review two's complement subtraction (2min)
  • Introduce a Binary full-adder (2min)
  • Introduce sum-of-product expressions for a full-adder circuit (2min)
  • Analyze the Boolean simplification of the SOP expression (2min)
  • Activity 1 – Build a Full-Adder Circuit (5min)
  • Activity 2 – Build a Multi-bit Adder Circuit (5min)(contingency 1 – remove)
  • Introduce a Multi-bit Adder with Subtraction (2min)(contingency 2 – remove)
  • Activity 3 – Build a Multi-bit Adder w/ Subtraction (5min)(contingency 2 – remove)
  • Conclusion (2min)

Teaching Approach / Activities

The activities in this lesson are performed by small groups of 2-3 students. Students organize themselves into groups at the start of class and stay in their groups throughout the activities.

The instructor provides a short review of binary addition with a focus on the concepts of a bit-slice and the identification of the inputs: A, B, and carry-in, and outputs: sum and carry-out. Student work with the instructor to build a truth-table showing the inputs and outputs and then derive the Sum-of-Product (SOP) “minterm” expressions for the sum and carry-out functions.

The instructor provides standardized expressions for both the sum and carry-out functions and student groups work on combining the functions into a single logic circuit with 3-inputs and 2-outputs, forming the full-adder. Students build their circuit physically with the logic-bit simulator devices and test their circuit against their truth tables.

Activity 1 Activity 2 Solution

The class groups combine their individual physical full-adder circuits into a multi-bit adder, and the class discusses its implementation in an ALU. Critical thinking topics include carry-in to bit-slice 0, individual input and sum-bits to number values, carry-out and overflow, and subtraction and signed numbers.

Activity 2 Activity 2 Solution

(Hwang 2016)

Assessment and feedback from teaching

I regularly teach the Full-Adder lesson to undergraduate students in Digital Systems. Teaching methods have included interactive whiteboard sessions where students collaborate in small groups to design, analyze, and illustrate a full-adder circuit, as well as utilizing online circuit simulators like CircuitVerse.org for emulation and testing purposes. This lesson marked the first implementation introducing the logic-circuit electronic emulator boards for hands-on experience in constructing and testing circuits.

Feedback from both peers and the professor highlighted the significance of the preparatory material leading up to this lesson in enhancing understanding and participation in the activities. However, it was noted that the review of essential concepts was somewhat rushed, according to their feedback.

During the hands-on portion, I observed that students encountered challenges in correctly connecting electric components and wires, leading to delays in the activities and constraining the time available for discussion and critical thinking exercises.

Overall feedback reflected positively on my teaching style, creating an engaging and enjoyable learning environment while effectively presenting the material. Despite some assistance, students successfully constructed the correct circuit and demonstrated the ability to anticipate and interpret the output values for a given set of inputs.

Reflection

Throughout this semester course, I have delved deeper into formal learning and teaching philosophies and methodologies. I view my teaching style and interests as a blend of cognitive constructivism and social constructivism, emphasizing interactive approaches to teaching complex logic processes in an engaging manner. I believe that my lesson presentation effectively embodies the integration of these learning and teaching philosophies.

Reflecting on my experiences and feedback, I have gained insight into refining my lesson planning by prioritizing learning objectives before individual assignments and activities. Employing a backward course design approach, I aim to strategically plan assessments that emphasize the value of computer organization and architecture design within software engineering and computer science programs (Fink, 2003). Subsequently, I will develop lectures, activities, and assignments that align with the learning objectives.

Moving forward, I intend to further emphasize cognitive constructivism and social constructivism concepts in my courses. Specifically, my objective is to incorporate both individual work and group activities, while fostering a flexible pace that accommodates students' varying learning speeds. This approach will enable students to assimilate more material at an accelerated pace, while ensuring that all students cover core required objectives at their own pace.

References

  • Bourque, P., & Fairley, R. (2014). Guide to the Software Engineering Body of Knowledge. (v3.0). IEEE Computer Society. Retrieved from www.swebok.org
  • Criteria for Accrediting Computing Programs, 2020 – 2021. (2021). Retrieved from abet.org: https://www.abet.org/accreditation/accreditation-criteria/criteria-for-accreditingcomputing-programs-2020-2021/
  • FGCU Departement of Computing and Software Engineering. (2024a, 03). Software Engineering. Retrieved from Florida Gulf Coast University, U.A. Whitaker College of Engineering: https://www.fgcu.edu/eng/softwareengineering/
  • FGCU Departement of Computing and Software Engineering. (2024b, 03). Software Engineering (BS). Retrieved from Florida Gulf Coast University, U.A. Whitaker College of Engineering: https://www.fgcu.edu/eng/softwareengineering/softwareengineering-bs
  • Fink, L. D. (2003). A Self-Directed Guide to Designing Courses for Significant Learning. San Fransisco, CA: Univeristy of Oklahoma.
  • Hwang, E. O. (2016). Digital Logic and Microprocessor Desin with Interfacing, Second Edition. Boston, MA: Cengage Learning.
  • Logozar, R., Horvatic, M., Sumiga, I., & Mikac, M. (2022). Challenges in Teaching Assembly Language Programming - Desired Prerequisites vs. Students' Initial Knowledge. IEEE Global Engineering Education Conference (pp. 1688-1697). Tunis, Tunisia: IEEE.
  • Moreno, L., Gonzalez, C., Castilla, I., Gonzalez, E., & Jose, S. (2007, November). Applying a constructivist and collaborative methodological approach in engineering education. Computers & Education, 49(3), 891-915. doi:10.1016/j.compedu.2005.12.004
  • Software Engineering vs. Computer Science. (n.d.). Retrieved from Software Engineer Insider: https://www.softwareengineerinsider.com/articles/computer-science-vs-softwareengineering.html