ECE 3822: Engineering Computation II
(Software Tools for Engineers)

Joseph Picone
Professsor
Department of Electrical and Computer Engineering
Temple University

office: ENGR 703A
email: picone@temple
phone: 215-204-4841 (ofc), 215-954-7076 (cell)
URL: http://www.isip.piconepress.com/publications/courses/temple/ece_3822

Course Description: The primary goal for this course is to teach engineers how to solve problems of scale using a variety of computer tools. The three main goals of this course are: (1) introduce students to the hierarchy of software tools (e.g., scripting languages, interpreted languages, compiled languages) used to solve engineering problems; (2) introduce the basics of Python, a scripting language that is a dominant tool in engineering; and (3) introduce Java, object-oriented design, and a number of Java-related software tools that automate testing, documentation and cross-compilation into web applications. A common thread throughout these topics is the the decomposition large-scale problems into smaller problems that can be solved using reusable modules. Good software engineering practices will be stressed throughout the course. The latter part of the course will involve developing a significant computer simulation of a real-world engineering system that involves real data and utilizes both Python and Java.

Course Overview: This course by nature is a very hands-on learning experience. Students will learn the basics of various software tools during an in-class lecture, and then be expected to explore the details of these tools outside of class. There is nothing fundamentally complicated about these tools, they just require practice. A high-level goal for the course is to introduce students to a process we call problem decomposition - the ability to take a complex task and break it down into its individual components.

ABET Student Outcomes (SO): ABET Performance Indicators (PI): Course Learning Objectives (CLO):
  1. Modern multitasking operating systems. (PI 1.2)

  2. Distributed computing. (PI 1.2)

  3. Compiled languages and integrated development environments. (PI 1.1)

  4. Scripting languages. (PI 1.2)

  5. Software configuration management and revision control. (PI 1.2)

  6. Object-oriented programming design and abstraction. (PI 1.2)

  7. Relational and non-relational databases. (PI 1.2)

  8. Dev Ops and other cloud-based software development technologies. (PI 1.1)

  9. Computational and visualization challenges in big data. (PI 1.1)
Course Topics: Refer to the SOs above to understand how these topics relate to our student outcomes.
  1. The login environment, shells and file systems. (CLOs 1, 2)

  2. Command line and regular expressions (CLOs 1, 3)

  3. Processes, multitasking, multithreading and remote logins. (CLO 2)

  4. Integrated Development Environments. (CLO 3)

  5. Python Programming. (CLO 4)

  6. Github and other revision control strategies. (CLO 5)

  7. Object-oriented design, implementation and testing. (CLO 6)

  8. Data structures and algorithms. (CLOs 3, 7, 9)

  9. Git software revision control and management. (CLO 5)

  10. Relational databases (mySQL). (CLO 7)

  11. Non-relational databases and object-oriented stores. (CLO 7)

  12. Big data computational and visualization challenges. (CLO 9)

  13. Dev Ops and cloud-based development environments. (CLO 8)
Questions or comments about the material presented here can be directed to picone@temple.edu.