# Syllabus for ME 305 — Engineering Computer Applications

Fall 2015

## Course description

This course provides an introduction to engineering computer applications with specific emphasis on Matlab. Students learn how to navigate the Matlab environment and create professional engineering graphics. Programming is taught with application to numerical solution of mathematical and engineering problems. Prerequisites: GE 206 and MTH 271.

## General information

- Instructor
- Rico Picone, PhD
- Instructor Email
- rpicone (at) stmartin (dot) edu
- Office Hours
- MWF 11 am–12 pm, Cebula 103C
- Office Hours
- MW 1:30 pm–2:30 pm, Cebula 103C
- Location
- Cebula 101
- Times
- MW 11:00–12:20
- Website
- ME 305 Website
- Moodle
- ME 305 Moodle

secrets

## Textbooks

Kermit Sigmon. *MATLAB Primer.* Third Edition, 1993.

Harold Abelson and Gerald J. Sussman with Julie Sussman. *Structure and Interpretation of Computer Programs.* Second Edition. MIT Press, 1996.

## Notes

Course notes will be here.

## Schedule

The following schedule is *tentative*.

week | topics introduced | reading | assignment due |
---|---|---|---|

introduction to computer programming | Assignment #1 | ||

assignment, processes, data, data types | Assignment #2 | ||

introduction to linear algebra | Assignment #3 | ||

arrays and array operations | Assignment #4 | ||

conditionals and loops | Assignment #5 | ||

functions | Assignment #6 | ||

2D graphics | Assignment #7 | ||

3D graphics | Assignment #8Midterm Exam |
||

statistics | Assignment #9 | ||

differential equations | Assignment #10 | ||

state space models | Assignment #12 | ||

introduction to software design | Assignment #13 | ||

algorithms | Assignment #11 | ||

symbolics | Assignment #14 | ||

symbolics | Assignment #15 | ||

finals week | Final Exam |

## Assignments

### Assignment #1

- Do the assigned reading.
- Write an expression in a MATLAB Command Window that returns the numerical value 8.
- Multiply the previous result, using the ans variable, by 3.
- Compare the result, using ans, to 24. Does the comparison return 1 or 0? What does this mean?
- Do spaces matter when you write an expression?
- In MATLAB, is there a difference between the numbers 1 and 1.0?
- Which computer hardware component stores lots of data, but is relatively slow.
- Which type of language is MATLAB? High-level, Assembly Language, or Machine Code?
- Which computer hardware component processes, stores, sends, and receives data?
- Which numeral system do we use most often?
- How many numbers can be described by a binary numeral system that has only three digits? (Hint: the base-10 number 1 has representation 001 and the base-10 number 2 has representation 010).
- Take the weekly homework quiz.

### Assignment #2

- Do the assigned reading.
- Write a program that has the following features:
- it generates a random integer between 1 and 10,
- it asks the user to input their guess of the number (use the
`input`

command … type`help input`

to learn about it), - if the user has guessed the correct number, it congratulates the user,
- if the user’s guess wass incorrect, it tells them they get a “strike,” tells them if they were low or high with their guess, and prompts for a second guess,
- it repeats this until they get either three “strikes,” in which case they lose, or they guess the correct number.

- Take the weekly homework quiz.

### Assignment #3

- Write a program that has the following features:
- it finds the following products: \begin{align} 8 \begin{bmatrix} 6 \\ 2 \\ -1 \end{bmatrix}, && -3 \begin{bmatrix} 4 & -6 \\ 3 & 27 \end{bmatrix}, && \begin{bmatrix} 5 & 3 \\ 9 & 12 \end{bmatrix} \begin{bmatrix} 5 \\ 2 \end{bmatrix}, && \begin{bmatrix} 13 & 3 & 135 \\ -3 & 7 & -3 \\ 0 & 35 & 1 \end{bmatrix} \begin{bmatrix} -4 \\ 1 \\ -3 \end{bmatrix}, \end{align} \begin{align} -3 \begin{bmatrix} 4 & -6 \\ 3 & 27 \end{bmatrix} \begin{bmatrix} 0 & -1 \\ -3 & 2 \end{bmatrix}, && \begin{bmatrix} 13 & 3 & 135 \\ -3 & 7 & -3 \\ 0 & 35 & 1 \end{bmatrix} \begin{bmatrix} 0 & -44 & -6 \\ 0 & 1 & 16 \\ 0 & 1 & 1 \end{bmatrix}; \end{align}
- it defines an array
`x`

with values`1`

,`2,`

, … ,`1000`

; - it changes the value of the element of
`x`

that is at index`507`

to equal`49`

. - it sums all the values of the new
`x`

array, and assigns the result to`y`

. - if
`y`

is greater than`1e4`

($10^4$), display the string`'acheivement unlocked'`

. Otherwise, display the string`'no. just, no.'`

.

- Let $x = 2 e^1 - 4 e^2$ be a vector in vector space $\mathbb{R}^2$. Using the standard basis $e=(e^1,e^2)$ for $\mathbb{R}^2$, write the vector’s coordinate tuple $x_e$.
- Derive the linear map $A: \mathbb{R}^2 \rightarrow \mathbb{R}^2$ that is the change-of-coordinate matrix from the standard basis to the basis $b = (3 e^1, -1 e^2)$.
- Write a matlab script that takes a vector coordinate tuple (array)
`x`

, in the standard basis $(e^i)$, transforms it to the $(b^i)$-basis, and assigns it to the vector coordinate tuple (array)`y`

. - Turn in the homework in class on Wednesday.

### Assignment #4

- Write a script that estimates the standard deviation of a random variable that has a gaussian probability density function using the function
`randn`

. Generate a`20`

by`1`

array that contains elements that have an increasing number of samples for the estimate. The first element is the estimate after`10`

samples, and each element thereafter is the estimate after`10`

more samples. - Write a script that evaluates each element of an array and determines if it is positive, negative, or zero. Let the array be a
`20`

by`1`

array of random integers (including zero) with uniform probability density function ranging from`-5`

to`5`

. When evaluating each element, if the element is positive, print`+`

; if negative, print`-`

; if zero, print`0`

. - Please turn in the homework in class, Wednesday 09/23.

### Assignment #5

- Write a
*program file*that defines the function`rect_int`

that performs numerical integration on input data as follows. Let there be four inputs: (1)`data`

for the one-dimensional data array to be integrated, (2)`delta_t`

for the scalar time steps between each data point, (3) lower time limit of integration, and (4) upper time limit of integration. Estimate the integral of`data`

over time using the*rectangular rule*that you learned in calculus. - Use
`rect_int`

to estimate the integral of`tanh`

from`0`

to`3`

using`100`

rectangles. - Repeat problems 1 and 2, but create and use a function
`mid_int`

that uses the midpoint rule. - Repeat problems 1 and 2, but create and use a function
`trap_int`

that uses the trapezoid rule. - Compare and discuss the results.
- Turn in your homework in class, Wednesday.

### Assignment #6

- Write a script that plots the upper half of a hemisphere of radius
`5`

. Turn the edge colors off so that the mesh isn’t shown. Use the`hot`

colormap and use lighting. Use a colorbar. - Write a script that plots the function $e^{-r}\, \cos{2\pi r}$, where $r$ is the radial coordinate $r = \sqrt{x^2 + y^2}$. Color the faces blue, turn edges off, and use lighting. Turn on a Grateful Dead album. Dive in.

### Assignment #7

Write a function with arguments a time array `t`

, “data” `y`

that is approximately sinusoidal, and the angular frequency of that data `omega`

. The function should return an array `[a1, a2, a3]`

where the elements of the array give the linear least-squares best-fit for the function
Test your function on this data, which has angular frequency $\omega = 2\pi\ rad/s$. Your writeup should show the results of this, including a plot of the noisy data and your analytic least-squares approximation. (Note: this used to say $\omega = 1\ rad/s$, which was totally incorrect.)

### Assignment #8

Write a script that numerically solves the differential equation for $x(t)$. Let $f(t)$ be the function where $A$ is the drive amplitude and $\omega$ is the drive frequency. Use initial conditions $x(0) = 1$ and $\dot{x}(0) = 0$. Show a plot of $x(t)$ for the case that $\zeta = 0.5$, $\omega_n = 20 \pi\ rad/s$, $A = 1/2$, and $\omega = 10 \pi\ rad/s$.

### Assignment #9

- Design the Butterworth filter below by choosing its parameters to meet the following design criterion: at $1\, kHz$, the output amplitude is approximately $20\%$ of the input amplitude. In order to aid in the design, simulate the response of the system to a sinusoidal input voltage $V_s(t) = A\,\sin{\omega t}$ with $A = 10\, V$, $\omega = 2000\pi$. Turn in your simulation code and a plot showing 5
*steady-state*periods of the input and the output signals. - Write and test a program (function) named
`text_to_code`

that converts an input string of English text to international Morse code. It should output an equivalent binary string of ones and zeros—a character for each “unit” of time—with a`1`

representing the “on” state and a`0`

representing the “off” state. A separate function`code_to_blink`

should be written that takes the output of this string and displays a visual representation (e.g. blinking “light”). Finally, write a script that uses these two functions to visualize the Morse code of the following paragraph (from Kierkegaard’s*Purity of Heart is to Will One Thing*).

Is not despair simply double-mindedness? For what is despairing other than to have two wills? For whether the weakling despairs over not being able to wrench himself away from the bad, or whether the brazen one despairs over not being able to tear himself completely away from the Good: they are both double-minded, they both have two wills. Neither of them wills one thing, however desperately they may seem to will it.

### Assignment #10

Write a function `write_paragraph`

that writes a paragraph. It should take as its input the number of sentences in the paragraph and return as its output the sentences as a single string.

Hint #1: “Teach” your function how to construct a sentence by giving it a sample text. You might consider using this text, which is Sartre’s essay *Existentialism is a Humanism*. The m-file has a single variable `text`

that is a single, long string of the entire text.

Hint #2: Build a graph that consists of *nodes* that are each word in the sample text and *edges* that represent the relation *can be followed by*. For example, the sample text contains the word `merely`

five times. These five times, it is followed by the word `an`

, `means`

, `disguising`

, `voluntary`

, or `formal,`

(notice the punctuation in the last of these).

Hint #3: We can convert the large string to a cell array of words with the `strsplit`

function. I recommend leaving the punctuation at the end of the words in which they appear in the text.

Hint #4: We can initialize a directed graph (`digraph`

) object in `MATLAB`

with the function `digraph`

(e.g. `G = digraph;`

). We can add an edge (and any new nodes required for the edge) with the function `addedge`

. Be sure to use it with a syntax like `G = addedge(G, 'existentialism','is')`

that re-defines `G`

.

Hint #5: To initialize the `write_paragraph`

function, randomly select a word from the graph with a capital letter as its first letter. Subsequent words should be added at random from those that are children (heads) of the current word (tail).

Hint #6: In order to know how many sentences you’ve built, you must know whenever you have a trailing period at the end of the most-recently selected word.

Hint #7: We cannot add an edge to the graph twice, and if we attempt to do so, `MATLAB`

will return an error. This is problematic. One way to deal with this is to use the `try`

block (see documentation).

Hint #8: More information on graphs in `MATLAB`

can be found here.

## Resources

Class resources will be posted here throughout the semester.

## Homework, quiz, & exam policies

### Homework & homework quiz policies

Weekly homework will be due in class on Wednesdays, and it will be turned in for credit.

Working in groups on homework is strongly encouraged, but no copying is permitted.

### Exam policies

The midterm and final exams will be in-class. If you require any specific accommodations, please contact me.

Calculators will be allowed. Only ones own notes and the notes provided by the instructor will be allowed. No communication-devices will be allowed.

No exam may be taken early. Makeup exams require a doctor’s note excusing the absence during the exam.

The final exam will be cumulative.

### Grading policies

Total grades in the course may be curved, but individual homework quizzes and exams will not be. They will be available on moodle throughout the semester.

- Homework quizzes
- 25%
- Midterm Exam
- 35%
- Final Exam
- 40%

### Academic integrity policy

Cheating or plagiarism of any kind is not tolerated and will result in a failing grade (“F”) in the course. I take this very seriously. Engineering is an academic and professional discipline that requires integrity. I expect students to consider their integrity of conduct to be their highest consideration with regard to the course material.

## Correlation of course and program outcomes

In keeping with the standards of the Department of Mechanical Engineering, each course is evaluated in terms of its desired outcomes and how these support the desired program outcomes. The following sections document the evaluation of this course.

### Desired course outcomes

Upon completion of the course, the following course outcomes are desired

- students will have a clear understanding of basic computer programming techniques;
- students will understand data types, functions, conditionals, and loops;
- students will be able to program in MATLAB;
- students will be able to produce plots in MATLAB;
- students will be able to import data into MATLAB, manipulate it, and plot it;
- students will be able to do basic statistical analysis with MATLAB;
- students will be able to solve differential equations numerically in MATLAB;
- students will understand basic numerical analysis;
- students will be able to use the symbolic toolbox in MATLAB; </ol>
- an ability to apply knowledge of mathematics, science, and engineering;
- an ability to design and conduct experiments, as well as to analyze and interpret data;
- an ability to design a system, component, or process to meet desired needs;
- an ability to function on multi-disciplinary teams;
- an ability to identify, formulate, and solve engineering problems;
- an understanding of professional and ethical responsibility;
- an ability to communicate effectively;
- the broad education necessary to understanding the impact of engineering solutions in a global and social context;
- a recognition of the need for, and an ability to engage in life-long learning;
- a knowledge of contemporary issues; and
- an ability to use the techniques, skills, and modern engineering tools necessary for engineering practice.

### Desired program outcomes

The desired program outcomes are that mechanical engineering graduates have

### Correlation of outcomes

The following table correlates the desired course outcomes with the desired program outcomes they support.

desired program outcomes | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|

A | B | C | D | E | F | G | H | I | J | K | ||

desired course outcomes | 1 | ✔ | ✔ | ✔ | ✔ | ✔ | | | | | ✔ | ✔ |

✔ | ✔ | ✔ | ✔ | ✔ | | | | | ✔ | ✔ | ||

✔ | ✔ | ✔ | ✔ | ✔ | | | | | ✔ | ✔ | ||

✔ | ✔ | ✔ | ✔ | ✔ | | | | | ✔ | ✔ | ||

✔ | ✔ | ✔ | ✔ | ✔ | | | | | ✔ | ✔ | ||

✔ | ✔ | ✔ | ✔ | ✔ | | | | | ✔ | ✔ | ||

✔ | ✔ | ✔ | ✔ | ✔ | | | | | ✔ | ✔ | ||

✔ | ✔ | ✔ | ✔ | ✔ | | | | | ✔ | ✔ | ||

✔ | ✔ | ✔ | ✔ | ✔ | | | | | ✔ | ✔ |