CSC 2400: Computer Systems
Week 1 – Goals and Introduction
- Prof. Michael Robson
CSC 2400: Computer Systems Week 1 Goals and Introduction Prof. - - PowerPoint PPT Presentation
CSC 2400: Computer Systems Week 1 Goals and Introduction Prof. Michael Robson Outline q Syllabus q Introductions q Background survey q What is a computer system? Syllabus www.csc.villanova.edu/~mprobson/courses/csc2400/ Syllabus Questions
Week 1 – Goals and Introduction
q Syllabus q Introductions q Background survey q What is a computer system?
www.csc.villanova.edu/~mprobson/courses/csc2400/
q Find a partner (or two) q Review the syllabus q Find three (or more) questions about the course
Collaboration is encouraged in this course while exploring the path to a solution. However, when the time comes to write the solution, discussions and references to Internet resources are no longer appropriate. All submitted work must be your own, as per Villanova’s academic integrity code (excerpt here): “Anyone who hands in work that is not his or her own, or who cheats on a test, or plagiarizes a paper, is not learning, is receiving credit dishonestly and is, in effect, stealing from other students. As a consequence, it is crucial that students do their own work. Students who use someone else's work or ideas without saying so, or who
q Familiar with Unix
q Familiar with C
q Familiar with C++
q Can compute the sum of all integers from 1 to 100
q Comformtable convering from binary to decimal
q Preferred Office Hours
q What is a computer? q What is a computer system? q What do computers do? q How do they do it? q Are computers intelligent? q What will computers be like in the future?
q Oxford dictionary:
in binary form, according to instructions given to it in a variable program
q Cambridge dictionary:
information and be given sets of instructions to organize and change it very quickly
Do a survey on campus
Numerous “correct” answers
Strictly speaking, computers only understand machine language (binary machine code).
1 0 0 1 0 1 1 0 0 1 0 1 1 1 0 1 0 0 1 0 1 1 0 0 0 1 0 1 1 1 0 1 0 0 1 0 1 1 0 0 1 0 0 1 0 1 1 0 1 0 0 1 0 1 1 0 0 1 0 1 1 1 0 1 0 0 1 0 1 1 0 0 0 1 0 1 1 1 0 1 0 0 1 0 1 1 0 0 1 0 0 1 0 1 1 0 1 0 0 1 0 1 1 0 0 1 0 1 1 1 0 1 0 0 1 0 1 1 0 0 0 1 0 1 1 1 0 1 0 0 1 0 1 1 0 0 1 0 0 1 0 1 1 0 1 0 0 1 0 1 1 0 0 1 0 1 1 1 0 0 0 1 0 1 1 0 0 1 0 1 1 1 0 1 0 0 1 0 1 1 0 0 0 1 0 1 1 1 0 1 0 0 1 0 1 1 0 0 1 0 0 1 0 1 1 0 1 0 0 1 0 1 1 0 0 1 0 1 1 1 0 1 0 0 1 0 1 1 0 0 0 1 0 1 1 1 0 1 0 0 1 0 1 1 0 0 1 0 0 1 0 1 1 0 1 0 0 1 0 1 1 0 0 1 0 1 1 1 0 1 0 0 1 0 1 1 0 0 0 1 0 1 1 1 0 1 0 0 1 0 1 1 0 0 1 0 0 1 0 1 1 0 1 0 0 1 0 1 1 0 0 1 0 1 1 1 0 1 0 0 1 0 1 1 0 0 1 0 1 1 1 0 1 0 0 1 0 1 1 0 0 0 1 0 1 1 1 0 1 0 0 1 0 1 1 0 0 1 0 0 1 0 1 1 0 1 0 0 1 0 1 1 0 0 1 0 1 1 1 0 1 0 0 1 0 1 1 0 0 0 1 0 1 1 1 0 1 0 0 1 0 1 1 0 0 1 0 0 1 0 1 1 0
Data plus Instructions
count = 0; while (n > 1) { count++; if (n & 1) n = n*3 + 1; else n = n/2; }
00000000000000000000000000000000 00000000000000000000000000000000 01100011010101110110001101010111 00101011101011010010101110101101 11010001110111011101000111011101 00101110100111000010111010011100 11010010001111001101001000111100 11010000011111011101000001111101 11010011101010011101001110101001 11010000111111101101000011111110 11010001010000101101000101000010
High level language Assembly language Machine language
mov EAX, EDX and EAX, 1 je .else jmp .endif .else: .endif: sar EDX, 1 mov EAX, EDX add EDX, EAX add EDX, EAX add EDX, 1 add ECX, 1 .loop: cmp EDX, 1 jle .endloop jmp .loop .endloop: mov ECX, 0
! Complete executable binary file ! Machine language
$ gcc program.c –o xprogram $ ./xprogram 1 0 0 1 0 1 1 0 0 1 0 1 1 1 0 1 0 0 1 0 1 1 0 0 0 1 0 1 1 1 0 1 0 0 1 0 1 1 0 0 1 0 0 1 0 1 1 0 1 0 0 1 0 1 1 0 0 1 0 1 1 1 0 1 0 0 1 0 1 1 0 0 0 1 0 1 1 1 0 1 0 0 1 0 1 1 0 0 1 0 0 1 0 1 1 0 1 0 0 1 0 1 1 0 0 1 0 1 1 1 0 1 0 0 1 0 1 1 0 0 0 1 0 1 1 1 0 1 0 0 1 0 1 1 0 0 1 0 0 1 0 1 1 0 1 0 0 1 0 1 1 0 0 1 0 1 1 1 0 1 0 0 1 0 1 1 0 0 0 1 0 1 1 1 0 1 0 0 1 0 1 1 0 0 1 0 0 1 0 1 1 0 1 1 0 1 0 0 1 0 1 1 0 0 1 0 0 1 0 1 1 0 1 0 0
q You’ve got to know assembly q
Chances are, you’ll never write in assembly
q Understanding assembly is key to understanding how
computers work
q Wikipedia:
complete, working computer
q Cambridge dictionary:
software) and equipment that makes it work
q Computer system = hardware + system software q Computer systems hardware is comprised of 5 basic elements,
as described by the Von Neumann architecture model (1945):
CPU
through common bus
Managing all these components requires a layer of software: the operating system
Operating System (OS)
System Calls
User Programs
Web Browser Music Player
HARDWARE
q Users and programs can’t directly access the hardware
q GOAL: Understand how computers work
→ assembly language → machine language (IA-32)
→ Linux operating system
q Byproduct: “Programming in the large”
q Why C instead of Java? q C supports our goal better
q Why Linux instead of Microsoft Windows? q Linux is good for education and research
q Linux is good for programming
source programming environment
tanner csgate helix felix
Network File System
Any lab, or your own PC/Mac/Linux Computer SSH
SSH
SSH
q Check out course web site now
http://www.csc.villanova.edu/~mprobson/courses/fa20-csc2400/
q Subscribe to the zyBook – Programming in C
q First assignment posted online Wednesday