User:Jeffj/CS3123/Syllabus

From A-State Computer Science Wiki
< User:Jeffj‎ | CS3123
Revision as of 12:42, 19 February 2020 by Jeffj (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

CS 3123 Programming Languages

Section 001 Spring 2020

Instructor

Dr. Jeff Jenness
OfficeCSM 132Office HoursTR 11:00am-12:00pm and MW 11:00pm-12:00pm
Phone870-972-3978 ext. 8117Emailjeffj@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:

Tests45%
Final25%
Homework30%

Schedule

(subject to change)

Week  TopicReadingAssignment
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

download slides homework

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#

download slides homework

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

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.

create PDF version