User:Jeffj/CS3123/Syllabus
From A-State Computer Science Wiki
< User:Jeffj | CS3123
CS 3123 Programming Languages
Section 001 Spring 2020
Instructor
Dr. Jeff Jenness | |||
Office | CSM 132 | Office Hours | TR 11:00am-12:00pm and MW 11:00pm-12:00pm |
Phone | 870-972-3978 ext. 8117 | jeffj@astate.edu |
Course Description
- CS 3123. Programming Languages
- Survey of organization and behavior of programming languages. Examination of data typing, control structures, syntactic representation and specification. Prerequisites: CS 2124. Spring.
Objectives
The student will learn the syntax, semantics, structures and paradigms of modern programming languages. The student will be able to understand and use several programming languages in different paradigms.
Outcomes
Program Specific Outcomes
- (Emphasized) Graduates of the B.S./B.A. Computer Science degree program attain the ability to apply knowledge of computing and mathematics appropriate to the discipline.
- (Emphasized) Graduates of the B.S./B.A. Computer Science degree program attain recognition of the need for and an ability to engage in continuing professional development.
Course Specific Outcomes
- Students will be able to understand and use syntax descriptions using EBNF grammars.
- Students will be able to understand and describe the levels of syntax analysis used in translation.
- Students will be able to understand and describe the use of variable names, binding, and scope.
- Students will be able to understand and describe the use of data typing in programming languages.
- Students will be able to understand and describe the syntax and use of expressions and statements.
- Students will be able to understand and describe the use of subprograms and modules in languages.
- Students will be able to understand, describe and use a language in the imperative paradigm.
- Students will be able to understand, describe and use a language in the object-oriented paradigm.
- Students will be able to understand, describe and use a language in the functional paradigm.
- Students will be able to understand, describe and use a language in the logical paradigm.
Grading
Grades are assigned on a standard scale with the following weights:
Tests 45% Final 25% Homework 30%
Schedule
(subject to change)
Week | Topic | Reading | Assignment |
---|---|---|---|
1 | Introduction and History | Chapter 1 & 2 | Chap 1: Review Q - 1,2,7,8,13,14,15,17,23; Prob Set - 1,2,3,4,8,12 (view chapter 1 problems) Chap 2: Review Q - 3,7,12,15,18,25,26,27,30,31,35,43,44,45,51,57,59 (view chapter 2 problems) |
2 | Language Snapshot: | C# |
download slides homework notes Chap: 12: Review Q - 1,2,3,4,5,6,7,8,10,18,19,20,21,22,23,24,25,26,38,47,48,49,50,51,52; Prob Set - 1,2,6,7,9,10,11,20 (view chapter 12 problems) |
3 | Syntax and Analysis | Chapter 3 & 4 | Chap 3: Review Q - 1,4,6,7,8,11,12,15,16,18,28; Prob Set - 3,5,6,7,8,10,11,12,15,20 (view chapter 3 problems) Chap 4: Review Q - 1,2,3,4,7,8,9,10,13,14; Prob Set - 4 (view chapter 4 problems) |
4 | Variables | Chapter 5 | Chap 5: Review Q - 1,3,4,5,6,7,8,9,10,11,12,13,15,18,20,21,22; Prob Set - 2,3,4,6,7,10,12 (view chapter 5 problems) |
5 | Language Snapshot: | Ruby | |
6 | Types | Chapter 6 | Chap 6: Review Q - 1,2,3,4,5,6,7,9,10,11,13,17,18,21,23,27,29,31,32,35,36,39,40,41,43,44,47,49,51; Prob Set - 1,4,5,8,9,13,14,20,21 (view chapter 6 problems) |
7 | Expressions | Chapter 7 | Chap 7: Review Q - 1,4,5,7,8,9,11,12,13,15,16,17,18,21,23,24,27; Prob Set - 1,2,3,4,7,8,9,11,15,19,20,21 (view chapter 7 problems) |
8 | Language Snapshot: | F# | Chap 15: Review Q - 1,2,3,4,5,6,7,8,9,10,12,13,18,19,29,30,35,46,48,50 (view chapter 15 problems) |
9 | Statements | Chapter 8 | Chap 8: Review Q - 1,3,4,5,6,9,11,12,13,14,15,18,20,23,28 (view chapter 8 problems) |
10 | Subprograms | Chapter 9 & 10 | |
11 | Language Snapshot: | Prolog | |
12 | Encapsulation | Chapter 11 | |
13 | Advanced facilities | Chapter 13 & 14 | |
14 | Review |
Dates to Remember
- Final Examination: May 7, 10:15am-12:15pm, CSM 211.
Homework
- Programming Languages Report: list of requirements for your report
- For programming homework, check the syllabus schedule.
Materials
Textbook
Concepts of Programming Languages, 11th ed. (ISBN: 978-0133943023), by Robert Sebesta. Pearson, 2016. (Amazon)
Further Reading
- Chapter 2
- Computer Languages History A website that has lots of interesting information on programming language history along with a nice timeline chart.
- Plankalkül Information on Konrad Zuse's Plankalkül, considered to be the first programming language.
- John Backus - the Father of Fortran A short article that gives some more history at i-Programmer.
- Chapter 3
- Extended Backus Naur form A Wikipedia article introducing the standardized form of EBNF.
- Chapter 5
- Naming convention (programming) This Wikipedia article discusses naming conventions for many languages.
Online Resources
- Go here for course supplements.
Software Downloads
- Ruby: the official website has installation instructions for all major platforms.
- Tutorials: try ruby (online interactive), tutorialspoint, Codeacademy, rubymonk (online interactive), rubylearning
- C#: download Visual Studio 2013 Express for Windows or the Mono Project for Mac OS X and Linux. MSDN also has some good C# resources.
- Tutorials: MSDN, C# station, tutorialspoint, Home & Learn (.NET programming), C# .NET tutorials, C# crash course
- Haskell: the official website has up-to-date information about Haskell implementations for all major platforms. Hugs is a portable REPL interpreter.
- Tutorials: Real World Haskell (online book), "Learn You A Haskell", WikiBooks, for C Programmers, 99 problems in Haskell
- Resources: Hoogle, Hackage, Cabal
- PROLOG: Download SWI-PROLOG. It has excellent support and a debugger built-in. The reference manual is a good place to start.
- Tutorials: prolog :- tutorial, Learn Prolog Now! (online book), Programming Prolog (wikibook), Logic, Programming and Prolog, 2ed (PDF book),
- Applications: Natural Language Processing Techniques, Building Expert Systems, Adventure in Prolog (build your own adventure game)
Course Policies
See: Department Policies
See Also
- repl.it repl.it Online execution environment for many programming langauges. Great learning tool.
- compileonline.com www.compileonline.com Another excellent execution environment for even more langauges from CodingGround.
- Computer Language History www.levenez.com/lang A timeline of the most important developments in programming languages.