Class Times: Lecture 3:00-3:50 WF Rm 231E Lab 3-5 Mon Rm 75F LeMans
Office Hours: 2-3 MWF, 8:30-9:30 TT Rm 209 Mad
(Other times by appointment) Office Phone: 4493
Email: psmith@saintmarys.edu Home Phone: 289-2126
This course is designed to give an overview of the levels of machine-human interaction: high level (illustrated by programming in C), assembly language level (illustrated by programming in SUN Assembly Language) and machine level (the level at which the computer actually interprets and executes its instructions). This top- down approach is the one we have used when programming in Pascal in earlier courses. It is hard to appreciate just exactly what the computer is doing as it executes a high level program. The best way to understand a computer is to communicate with it in its own language. Machine language programming is very tedious, but assembly language is extremely close to machine language. In addition to increasing one's understanding of the computer, assembly language gives the programmer complete control over the computer's behavior to an extent not possible with most high level languages. Of all the high level languages (Pascal, COBOL, Fortran, Basic, etc.), C gives the greatest control over low-level computer functions, and for this reason it is used extensively in the design of operating systems and compilers. Follow the link to the CPSC 307 Knowledge Map for a more detailed list of topics.
Other important course goals are to increase awareness of and to develop your learning and problem solving skills, and to become efficient working in cooperative groups. By the end of the course, you should be able to learn faster than you do now. You will be conscious of and able to assess your level of the learning skills listed in the attached taxonomy of process education. We will use cooperative group learning, discovery learning, applied critical thinking, problem solving, and self assessment in each class and lab. You will also be expected to keep a learning journal to help you assess your progress.
Research has shown that there are four main learning styles. Some people learn best by sounding out their ideas with others as they develop them. For these learners, small group learning is very effective. Others like to absorb ideas, think about them, and then communicate their responses. Lectures are a preferred learning mode for these students. Still others learn best by solving problems. They find that doing homework is essential to their learning. Finally, there are those who want to put their knowledge to use by working on realistic projects. They need this type of challenge to motivate them. For them, "just in time" learning is best (i.e., they want to learn what they need to know to effectively solve real problems when the knowledge is needed and not before). We will try to engage you in all these learning styles during this course so that you can learn to appreciate the learning styles of others.
The primary theme of this course is the improvement of the learning process by practicing learning skills in the mastery of computer organization and C and Assembly Language programming. During each class you will work with your team on the following tasks: (1) quiz/problem solving session using information from the reading assignment, (2) minilecture or problem solution presentation, (3) learning exercise (involving concept models to manipulate and critical thinking questions about the models), (4) consulting session (you ask me questions), and (5) assessment of how well you worked as a team to learn the concepts and solve the problems. There will be very little "lecturing." Thus, it is essential that you do the reading for every class.
The reason why we emphasize collaborative learning as described in the preceding paragraph is that employers of systems analysts seek individuals who excel as: (1)
Only 5% of the knowledge gained in college is actually used on the job after you have been on the job for five years. Information is increasing exponentially so a person must become an expert at acquiring and applying knowledge when needed to solve problems.
There will be six programming assignments (2 in C, a C project, 2 in Assembly Language, and a final project to write an assembler). All programs should be well documented and points will be deducted if they are not. Programs are due by 6pm on the due dates and assignments handed in late will incur a late penalty of 2 points per weekday. The programming assignments are to be done on an individual basis. You are encouraged to compare ideas with other students but you should write your own programs without using notes made during joint sessions. Copying someone else's work or using their computer files or programs is never allowed. Failure to adhere to this policy will cause loss of all credit for the work in question. See the statement in the student handbook on academic honesty.
The Monday classes will be held in the PC lab working on a weekly lab assignment which should take two hours to complete. Each lab assignment is due the Friday after you start work on it. You may consult with me or others in the class during the lab.
A student is expected to attend every class. If you miss a class, it is your responsibility to make up the work and turn in any missed assignments. If you miss an exam or a homework or project deadline, you receive a grade of zero unless you have an official excuse from Mrs. Marcy's office or have made previous arrangements with me. A student who misses more than five classes without valid excuses will be required to withdraw from the class. The reason for this policy is that you have a responsibility to contribute to your team's efforts. If you aren't there your team is severely handicapped since each team member has a specific role to play.
I will select the team participants. If someone just does not work out on a team for any number of reasons, the two teams can arrange a trade. The two people to be traded must agree and at least one other member of each team must also agree before a trade can take place.
See the statement in the student handbook and the link to the Math Department honesty Policy at the beginning of the syllabus. In this course, dishonesty will result in a grade of zero for the work involved. Continued infractions will be referred to the Office of Academic Affairs for disciplinary action. You are encouraged to compare ideas with other students but you should write up your own homework without using notes made during joint sessions until you get stuck. Copying someone else's work or using their computer files or programs is never allowed. Failure to adhere to this policy will cause loss of all credit for the work in question.
The general grade letter equivalents: A 92-100; A- 88-91; B+ 84-87; B 80-83; B- 76-79; C+ 72-75; C 68-71; C- 64-67; D+ 60-63; D 56-62; F below 56. To figure final grade break points, multiply the above break points by ___ (to be determined by class)
Points
Base Concept Test (1/20) 10 percent of grade
Two tests (2/22, 4/19) 100 points each
Lab Assignments * points
4 programming assignments (due 2/5, 2/19, 3/31, 4/16) * points
2 projects (due 3/19, 5/4) * points
Daily Quiz/Problem Solution 10 points each
Daily Class Assessment 10 points each
Journal * points
Total
Week Topic Reference
1 Introduction to course and Process Education Syllabus & Scragg Preface
2 Review of Base Concepts Chapter 1, Scragg
3 High Level Language Model Schild, pp. 1-28, 35-62
4 I/O, pointers, strings in C Schild, pp. 33-34, 69-111,
117-133
5 Modularity Constructs Chapter 1, Scragg
6 Review and test
7 Assembly Language Model and Data Movement Chapter 2 Scragg
8 SUN Assembly language overview Handout & UNIX Man pages
Break
9 Assembly Language Control Structures Chapter 2 Scragg
10 Assembly language programming Chapters 3,5 Scragg
11 Machine Language Model Chapter 6 Scragg
Easter
12 Assembler, Linker, Loader Chapter 7 Scragg
13 Review and test
14 Memory and Computer Systems Chapters 10,11 Scragg
15 Machine level I/O Chapter 12 Scragg
Lab Activities
Week Topic
1 Reengineering a C Program
2 " " "
3 Pointers and Dynamic Storage Allocation
4 Structs and Header Files
5 String Manipulation
6 Test
7 Reengineering Assembly Language
8 Embedded Assembly Language
9 Control Structures in Assembly Language
10 Subroutines and Parameter Passing
11 Assembler and Final Project Assignment
12 Test
13 Work on Final Project
Each student must keep a learning journal (composed of the quizzes and activity critical thinking and skill development questions as well as three significant concepts learned, one important process practiced and one learning skill used in our class each day it meets) and a class journal (see below) and bring it to every class. I will collect the reflector's journals on the Thursday following the week in which she is the reflector, beginning February 4. Vary the learning skills (see the link in the on-line syllabus for a list of learning skills for life) you practice. From time to time, I will assign a topic and ask you to write a page about it. In the class journal, you should complete a self assessment form for each class. In addition, the reflector should complete a weekly reflector's report, the recorder should complete a weekly recorder's report, and the captain and spokesperson should each select one activity during the week and complete an activity assessment form. I will grade the journal 60% on completeness; 40% on quality.
1.1D.K. Apple, S.W. Beyerlein, M.A. Schlesinger, Learning Through Problem Solving, Pacific Crest Software, Corvallis, OR (1992), p. vii
Return to Peter Smith's
Home Page