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):
- SO 1: An ability to identify, formulate and solve complex
problems by applying principles of engineering, science and
mathematics.
ABET Performance Indicators (PI):
- PI 1.1: Apply principles of engineering, science,
and mathematics to formulate, model, analyze, and solve
complex electrical engineering problems.
- PI 1.2: Apply computational tools, design tools, and
programming to solve electrical engineering problems.
Course Learning Objectives (CLO):
- Modern multitasking operating systems. (PI 1.2)
- Distributed computing. (PI 1.2)
- Compiled languages and integrated development
environments. (PI 1.1)
- Scripting languages. (PI 1.2)
- Software configuration management and revision
control. (PI 1.2)
- Object-oriented programming design and abstraction. (PI 1.2)
- Relational and non-relational databases. (PI 1.2)
- Dev Ops and other cloud-based software development
technologies. (PI 1.1)
- 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.
- The login environment, shells and file systems. (CLOs 1, 2)
- Command line and regular expressions (CLOs 1, 3)
- Processes, multitasking, multithreading and remote
logins. (CLO 2)
- Integrated Development Environments. (CLO 3)
- Python Programming. (CLO 4)
- Github and other revision control strategies. (CLO 5)
- Object-oriented design, implementation and testing. (CLO 6)
- Data structures and algorithms. (CLOs 3, 7, 9)
- Git software revision control and management. (CLO 5)
- Relational databases (mySQL). (CLO 7)
- Non-relational databases and object-oriented stores. (CLO 7)
- Big data computational and visualization challenges. (CLO 9)
- Dev Ops and cloud-based development environments. (CLO 8)
Questions or comments about the material presented here can be
directed to
picone@temple.edu.