Computer Programming for Engineering Applications
ECE 175 - Computer Programming for Engineering Applications (3 units)
Description: Fundamentals of C, complexity and efficiency analysis, numerical precision and representations, intro to data structures, structured program design, application to solving engineering problems.
Grading: Regular grades are awarded for this course: A B C D E.
Credit for: 2 units engineering science, 1 unit engineering design.
Usually offered: Fall, Spring.
5th Edition, Problem Solving and Program Design in C, Jeri R. Hanly, Elliot B. Koffman, Addison Wesley, 2006.
4th Edition, Just Enough Unix, Paul K Andersen, McGraw-Hill Science/Engineering/Math, 2005
Course Learning Outcomes:
By the end of this course, the student will be able to:
- Navigate through and utilize the Unix Operating System,
- Handle the C programming language for solving engineering problems,
- Understand the software fundamentals, techniques, notation, and coding principles.
Introduction to UNIX Operating System (2 weeks)
- Overview of computer organization
- Role of the operating system
- Basics of UNIX
- Commands and command interpreter
- The file system, directories and filenames
- The directory hierarchy
- C shell
- Process jobs, and history, Foreground and background
- Input-Output redirection, Pipes
C Programming Language (10 weeks)
- Introduction to C; elements of a C program; preprocessor directives; statements and expressions; examples of commonly used functions; assignment; formatting; data types; input/output redirection; programming.
- Simple data types; constants and variables; conversion between different data types.
- Conditions; relational operators; logical operators; precedence rules; if, if-else, and switch statements.
- Repetition and loops; while statement; for statement; increment and decrement operators; loop termination; nested loops; do-while statement; testing and debugging loops.
- Top-down design approach; modular programming; user functions; library functions; function declaration and definition; pointers; interaction between functions; scope rules; programs with multiple functions.
- Pointers and addresses; pointers and arrays; pointers and function arguments; pointer arithmetic.
- Arrays; declaration and initialization of arrays; multi-dimensional arrays; searching and sorting arrays, passing arrays to functions.
- String arrays; string library functions; substrings; concatenation; strings vs. characters, file input, file output.
- Engineering applications, matrix manipulations, numerical integration and differentiation, numerical solution of equations, representing and computing with polynomials.
- Recursion; recursive functions with array parameters.
- Basics of structures; structures and functions; arrays of structures; assigning values to structure variables; linked lists, other dynamic structures, application to databases.
Software Design (3 weeks)
- Design and coding guidelines
- Fundamental design concepts
- Documentation guidelines
- Overall system design
Three 50-minute lecture sessions per week.
Approximately ten homework problem sets during semester.
There will also be two midterm exams, one final group project plus bonus
problems that may come in the form of extra problem sets and/or
in-class surprise quizzes. There will not be a final exam, however
students SHOULD be available on the day and time of the final n case the
instructor judges that oral examination is required. Students should be
prepared for such an examination on the day and time of the final exam.
Relationship to Student Outcomes:
ECE 175 contributes directly to the following specific Electrical Engineering and Computer Engineering Student Outcomes of the ECE Department:
- an ability to apply knowledge of mathematics, science, and engineering (High)
- an ability to design and conduct experiments, as well as to analyze and interpret data (Medium)
- an ability to design a system, component, or process to meet desired needs (High)
- an ability to function on multi-disciplinary terms (Medium)
- an ability to identify, formulate, and solve engineering problems (High)
- a knowledge of contemporary issues (Low)
- an ability to use the techniques, skills, and modern engineering tools necessary for engineering practice. (High)
Dr. Srinivasan Ramasubramanian