CS152-week1-1x - Department of Computer Science
Download
Report
Transcript CS152-week1-1x - Department of Computer Science
CS152
Programming Paradigms
Thaddeus Aid
Department of Computer Science
San Jose State University
Spring 2016
Creative Commons Attribution-ShareAlike 4.0 International License
1
Green Sheet
• The Green Sheet is/will be available at:
http://www.sjsu.edu/cs/practicalities/syllabi/spring-2016/index.html
• It will also be available in the Canvas course area.
• Additionally it will live at http://www.cs.sjsu.edu/~aid/greensheets
• Please take a look at it
Creative Commons Attribution-ShareAlike 4.0 International License
2
Contacting me
• Email: [email protected] – This is my preferred method.
• Skype: Thaddeus.aid – Make sure to mention that you are a student
• Office Hours: Saturday 16:00 – 17:30 in DH282
Creative Commons Attribution-ShareAlike 4.0 International
License
3
Course Description
• Programming language syntax and semantics.
• Data types and type checking.
• Scope, bindings, and environments.
• Functional and logic programming paradigms, and comparison to
other paradigms.
• Extensive coverage of a functional language.
Creative Commons Attribution-ShareAlike 4.0 International
License
4
Learning Outcomes
• 1. CLO 1 Have a basic knowledge of the history of programming languages.
• 2. CLO 2 Have a basic knowledge of the procedural, object-oriented, functional, and logic
programming paradigms.
• 3. CLO 3 Understand the roles of interpreters, compilers, and virtual machines.
• 4. CLO 4 Critique the design of a programming language.
• 5. CLO 5 Read and produce context-free grammars.
• 6. CLO 6 Write recursive-descent parsers for simple languages, by hand or with a parser generator.
• 7. CLO 7 Understand variable scoping and lifetimes.
• 8. CLO 8 Write interpreters for simple languages that involve arithmetic expressions, bindings of
values to names, and function calls.
• 9. CLO 9 Understand type systems.
• 10. CLO 10 Understand the implementation of procedure calls and stack frames.
• 11. CLO 11 Produce programs in a functional programming language in excess of 200 LOC
Creative Commons Attribution-ShareAlike 4.0 International
License
5
Text Book
• None!
• We will be using online material that will be assigned as required
Creative Commons Attribution-ShareAlike 4.0 International
License
6
Assignments and Exams
• There will be 4 homework assignments
• 3 will be worth 10% of your grade each
• 1 will be worth 20% of your grade
• There will be 1 Midterm exam worth 20% of your grade
• There will be 1 Final Exam worth 30% of your grade
Creative Commons Attribution-ShareAlike 4.0 International
License
7
How I Grade
• There are 100 points available in this course:
• For Homework:
• The 10% Homework Assignments are worth 10 points (kind of obvious)
•
•
•
•
7 Points – Content
1 Point – Style
1 Point – Clarity
1 Point – Formatting
Creative Commons Attribution-ShareAlike 4.0 International
License
8
Grading (Cont.)
• The 20% Homework is worth 20 points (again obvious)
• You will be writing an interpreter in Clojure.
• Your goal will be to “create” a simple language and then use Clojure to translate it into
computer usable terms.
• 1 point – It works
• 15 points – Your ideas on how to implement it and your choice of algorithms
• 1 point – Style
• 1 point – Clarity
• 1 point – Formatting
Creative Commons Attribution-ShareAlike 4.0 International
License
9
Grading (Cont. 3)
• Midterm – 20 points
• Anything that I mention in class is fair game for being put into the midterm
• If I don’t mention it in class I will not put it in the midterm
• Hopefully (all things being equal) I will provide 4 sections of questions each
worth 10 points.
•
•
•
•
You will choose 2 and answer them
You do not get extra credit for answering 3 or 4
If you answer more than 2 I will take the scores from the 2 that you score highest in
The Midterm will last 2 hours and 15 minutes
• You can leave early if you finish early, just be really quiet
Creative Commons Attribution-ShareAlike 4.0 International
License
10
Grading (Cont. 4)
• Final – 30 Points
• Basically the same sort of thing as the midterm, but with the totality of the
class available for questions.
• I still won’t put anything on it that I don’t cover in class.
• 2 hours and 15 minutes
• You can leave early if you are really quiet
• Hopefully, like the midterm, I will provide 4 sections of questions worth 15
points each and you choose the two you like best.
• If you answer more than two sections you will be scored for your highest two scores.
Creative Commons Attribution-ShareAlike 4.0 International
License
11
Final Grade
• I will simply total the points you earn
• This means right now that you have an A+, keep it up!!!!!
• The letter grades are as follows:
•
•
•
•
•
•
90% or more A
80-89% B
70-79% C
60-69% D
59% or less F
The + or –
• If the unit digit is 7-9 you get a +
• If the unit digit is a 0-2 you get a –
• That means a score of 82 is a BCreative Commons Attribution-ShareAlike 4.0 International
License
12
Extra Credit
• I have no plans for extra credit.
• That being said, I want you to succeed.
• If you put in the work, you will get a good grade.
Creative Commons Attribution-ShareAlike 4.0 International
License
13
Getting your work back
• I hope to have your homework back to you within 2 weeks.
• You won’t get your midterms back but we will go over the questions.
• I will endeavor to have them graded within 2 weeks
• You also won’t get your finals back.
• These will be graded and your final grade posted at the normal time
Creative Commons Attribution-ShareAlike 4.0 International
License
14
Expectations of You (The Student)
• Be here on time
• If you are more than 10 minutes late I reserve the right to refuse entry to the
class until the break time. You may join the class after the break.
• If you are late, do not make a disturbance when you enter the class.
• If you are going to be late, let me know and I can work around it.
• SJSU guidelines say that you should be spending about 9 hours a
week on this course.
• I will endeavor to keep things to under that time. I know that everyone has
other responsibilities and need to maintain social connections or go insane.
Creative Commons Attribution-ShareAlike 4.0 International
License
15
Expectations of You (The Student)
• Late Work
• In general, I don’t accept late work unless you contact me prior to the
deadline
• Contact me earlier rather than later
• Submission of Work
• The dates are listed in the Green Sheet (subject to change)
• All submissions are to be done by email (send to [email protected])
• You must put your name in the file and in the file name
• The file name should be something like cs152-firstname-lastname-assignment1.doc
• If you have multiple files please zip them
Creative Commons Attribution-ShareAlike 4.0 International
License
16
Expectations of You (The Student)
• Classroom Behavior
• We are all adults that are here because we want to be.
• You are paying a lot of money to be here!
• So is everyone else!
• As such, we will promote a friendly, helpful atmosphere.
• All things like racism, homophobia, sexism, transphobia, etc are strictly
forbidden.
• Class participation and questions are encouraged, I particularly like it when
people stump me. It makes me think and learn something new.
Creative Commons Attribution-ShareAlike 4.0 International
License
17
Expectations of Me (The Teacher)
• I will be on time.
• If I am not on time I will email everyone
• If I am ill I will email everyone
• I will do everything in my power to enable you to learn and get a good
mark in this course.
• I will be available as much as possible to answer questions on Canvas,
by email, or Skype.
Creative Commons Attribution-ShareAlike 4.0 International
License
18
Expectations of Me (The Teacher)
• This is my first term at SJSU as well as teaching this course!
•
•
•
•
I am learning how to do this as well!
I WILL make mistakes!
I WILL do my best to fix them!
Give me feedback! I live for feedback!
• If you like something, say so
• If you don’t, say so anyway
Creative Commons Attribution-ShareAlike 4.0 International
License
19
Recording and Sharing Course Information
• All my lecture slides are licensed under the Creative Commons AttributionShareAlike 4.0 International License
• Feel free to give a copy to everyone you know
• Feel free to record my lectures
• However, as derivative works of my lecture notes they are also bound under the
same license. So feel free to give a copy to everyone! (Also if it is a good copy, I want
a copy to release on my YouTube page).
• My questions/exams are NOT to be shared.
• Plagiarism will get you kicked off my course and reported to the appropriate people.
• Citation is of course not plagiarism ;)
• If you work as a group, you must tell me so and tell me the names of everyone that
contributed to your work.
Creative Commons Attribution-ShareAlike 4.0 International
License
20
Disabilities
• If you have a disability or think you have a disability
• The wonderful and helpful people at the Accessibility Education Center will
help you out and let me know what I need to do in order to help you learn
• You are NOT required to tell me.
• You can tell me if you wish and I will do my best to adjust my teaching style to
accommodate you.
Creative Commons Attribution-ShareAlike 4.0 International
License
21
Topics to be Covered
• Warning: This is Subject to Change!!!
• Intro to Programming Paradigms (This lecture)
• A Brief History of Computers and Programming
• Procedural Programming
• Object Oriented Programming
• Functional Programming
• Introduction to Clojure
• Logic Programming
• Introduction to Prolog (probably SWI-Prolog, to be determined)
Creative Commons Attribution-ShareAlike 4.0 International
License
22
Topics to be covered (Cont.)
• Interpreters, Compilers, and Virtual Machines
• Context Free Grammars
• Data Types
• Mutability
• Static vs Dynamic Programming
• REPL
• Interpreting Commands
• Inter-Process Communication
Creative Commons Attribution-ShareAlike 4.0 International
License
23
Topics to be Covered (Cont.)
• Inter-system Process Communication
• Parallel and Concurrent Programming
Creative Commons Attribution-ShareAlike 4.0 International
License
24
Homework 1 - Essay
• Explain why there are different paradigms in programming and what
different paradigms excel at and what they struggle with.
• Contrast paradigms
• 2500 words
• Harvard style citations are required (check out RefWorks, or other citation
software) – they are also not part of your word count.
• Of course spelling and grammar count.
Creative Commons Attribution-ShareAlike 4.0 International
License
25
See you after the break
• 15 minutes!
Creative Commons Attribution-ShareAlike 4.0 International
License
26