An Experiential Introduction To Principles Of Programming Languages

1 view
Skip to first unread message

Gwenda Arguin

unread,
Aug 4, 2024, 4:56:23 PM8/4/24
to unraijuxdo
Atextbook that uses a hands-on approach to teach principles of programming languages, with Java as the implementation language.

This introductory textbook uses a hands-on approach to teach the principles of programming languages. Using Java as the implementation language, Rajan covers a range of emerging topics, including concurrency, Big Data, and event-driven programming. Students will learn to design, implement, analyze, and understand both domain-specific and general-purpose programming languages.


Develops basic concepts in languages, including means of computation, means of combination, and means of abstraction.Examines imperative features such as references, concurrency features such as fork, and reactive features such as event handling.Covers language features that express differing perspectives of thinking about computation, including those of logic programming and flow-based programming.Presumes Java programming experience and understanding of object-oriented classes, inheritance, polymorphism, and static classes. Each chapter corresponds with a working implementation of a small programming language allowing students to follow along.


I CSI 201 (= I ECE 201) Introduction to Computer Science (4)

(Formerly I ECE/I CEN/I CSI 201.) This course first introduces with the elementary concepts of computer science such as CPU, memory, I/O devices and binary number system. It then focuses on developing basic programming skills. The topics include input and output data, data types, control structures, functions/methods, arrays, procedural and object-oriented programming concepts, and program debugging and compilation. Only one of I CEN/I CSI/I ECE 201 may be taken for credit. Prerequisite(s): no prerequisite; general mathematical knowledge and computer skills are recommended.


I CSI 213 (= I ECE 213) (formerly I CSI 310) Data Structures (4)

(Formerly I CEN/I CSI 213/I CSI 310.) This course covers commonly used abstract data structures such as lists, stacks, queues, trees and graphs. The implementation and time-space analysis of these data structures is discussed in the context of recursion, sorting and searching algorithms. May not be taken by students with credit for I CSI 310. Only one of I CEN/I CSI/I ECE 213 may be taken for credit. Must be completed with a grade of C or better to take I CEN/I CSI 333 or I ECE 233. Prerequisite(s): grade of C or better in I CEN/I ECE/I CSI 201, or I CEN 200 or I ECE 141.



I CSI 300Z Societal and Ethical Implications of Computing (3)

Current age challenges for governments, communities, and individuals related to development and implementation of computer technologies. General and professional ethics. Analysis of various moral aspects of computing (privacy, security, hacking, etc.) for making responsible decisions. Intellectual property concepts such as copyrights, patents, and trademarks. Elements of effective professional and technical communication and documentation. Prerequisite(s): any introductory course in computer science or related field; programming experience is a plus.


I CSI 311 Principles of Programming Languages (4)

Introduction to the design and implementation of programming languages, including language features, paradigms and design decisions. Briefly covers functional and logical programming paradigms and reinforces object-oriented concepts. Discusses interpreters, compilers, transpires and virtual machines, including lexical analysis, parsing, semantic analysis, optimization, code generation. Introduction to automata and state machines. Prerequisite(s): grade of C or better required in I CSI/I CEN 210 and I CSI/I CEN 213.


I CSI 318 Introduction to Software Engineering (4)

Software Engineering is the study and application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software. This course covers the fundamental principles of software engineering, including all phases in the software life cycle from software requirement, analysis, design, implementation, and maintenance. Only one of I CSI 318 and I CSI 418 may be taken for credit. Prerequisite(s): grade of C or better in I CSI 311.


I CSI 401 Numerical Methods (3)

Study of practical methods for the numerical solution of a variety of problems on a digital computer. Topics include roots of equations, numerical interpolation, numerical integration and differentiation; the evaluation of mathematical functions, least squares curve fitting; the solution of simultaneous linear equations, and matrix inversion. Prerequisite(s): grade of C better in both I CSI/I CEN 213 and A MAT 220.


I CSI 403 Design and Analysis of Algorithms (3)

Algorithm efficiency based on asymptotic notation and analysis for iterative and recursive algorithms. Algorithm design strategies: iterative, divide-and-conquer, greedy and dynamic programming. Set management including hashing, disjoint sets and heaps. Algorithms on graphs and trees. Prerequisite(s): grade of C or better in both I CSI/I CEN/I ECE 210 and I CSI/I CEN/I ECE 213.



I CSI 404 (= I ECE 404) Computer Architecture and Organization (3)

A quantitative approach to computer architecture and organization that addresses both the software and hardware aspects of performance in modern computing systems. Topics include functional descriptions, operation, and logic design of major system components, such as the central processing unit and memory, and control and communication. Emphasis will be placed on examining the relationship of a system's architecture and organization to application performance. Only one of I CSI/I CEN/I ECE 404 or I ECE 432 may be taken for credit. Prerequisite(s): grade of C or better in I CSI 333 or I ECE 233.


I CSI 407 Human Computer Interaction (3)

This course covers the fundamentals and concepts of design, implementation, and evaluation of human-computer interfaces. Topics include human cognitive aspects; user-centered design; design goals and principles; interface and interaction types; prototyping and construction; and evaluation methods. In order to make a balance between theory and practice, emphasis is placed on a course-end project involving design, implementation and evaluation of the user interface for a specific application. Prerequisite(s): grade of C or better in I CSI 311.


I CSI 409 Automata and Formal Languages (3)

Introduction to the theory of computation. Models of computation including finite automata, push-down automata. Turing machines are examined along with their formal language counterparts such as regular, context-free and phrase-structured languages. Key results such as pumping lemmas and proofs of undecidability are covered. Additional topics may include computational complexity and applications to Computer Science. Prerequisite(s): grade of C or better in I CSI 311.


I CSI 410 Database Systems (3)

This course covers the fundamentals and concepts of design, implementation and use of databases. Topics include database system architectures, data abstractions and models, query languages, relational algebra and calculus, indexing mechanisms, data integrity, rollback and recovery mechanisms, access control, theory of database design, and access methods including interfaces to programming languages. Prerequisite(s): grade of C or better in both I CSI/I ECE 210 and I CSI/I ECE 213.


I CSI 416 (= I ECE 416) Computer Communication Networks (3)

(Formerly I CEN/I CSI 416.) This course covers fundamentals in computer communication networks and the principles of distributed systems that leverage these networks. The course will focus on key Internet application architectures, principles and protocols, covering reliable data transfer and transport protocols; routing and forwarding; data link layer communications and principles of shared media access. Students will also be introduced to various physical layer techniques like error correction and bandwidth efficiency; content delivery networks; and software-defined networks. The students will apply their understanding of networking fundamentals while working on hands-on programming assignments, packet trace analysis and Internet measurements. Prerequisite(s): I CSI 333 or I ECE 233 and A MAT 367 or A MAT 370.


I CSI 417 Compiler Construction (3)

In this course, students construct a compiler of their own design. Lexical analysis, parsing, semantic analysis, code generation, error detection and recovery, runtime systems and linking are covered in depth with an emphasis on implementation. Prerequisite(s): grade of C or better in both I CSI 333 and I CSI 409.



I CSI 418Y Software Engineering (3)

This course covers advanced object-oriented design principles and software engineering principles, including understanding various software development methodologies, the software development life cycle, how to work with clients to derive requirements and create architecturally sound software, testing and quality assurance, software maintenance practices and how to build a software engineering team. Project work in contemporary concurrent and object-oriented languages. Only one of I CSI 318 or I CSI 418Y may be taken for credit. Prerequisite(s): Grade of C or better in I CSI 311.



I CSI 421 Discrete Mathematics with Applications (3)

A deeper coverage of the content of ICSI/IECE 210. Propositional logic, proofs by induction and combinatorial analysis such as counting problems. Introduction to recurrence equations and graph theory. Prerequisite(s): Grade of C or better in I CSI/I CEN 210.



I CSI 422 Computer Graphics (3)

This course covers the theory and practice of computer graphics. Topics include graphics hardware, point plotting techniques, two and three dimensional transformations, viewing and clipping, hidden surface removal, modeling three-dimensional shapes with polygon meshes, hierarchical modeling of three-dimensional objects, and lighting and shading techniques. Prerequisite(s): grade of C or better in both A MAT 220 and I CSI 333 or I ECE 233 (formerly I ECE 333).



I CSI 424 Computer Security (3)

This course introduces students to the fundamental and technical problems surrounding computer security. The course reviews basic security concepts, design principles, and mechanisms. Throughout the course and based on hands-on exercises, students will develop an in-depth understanding of several vulnerabilities and corresponding countermeasures in system security, web security, and network security areas. Topics include privilege escalation, buffer overflow, race condition, SQL injection, cross-site scripting, packet spoofing, TCP attacks, and firewalls. Prerequisite(s): I CSI 333 or I ECE 233 (formerly I ECE 333).



I CSI 426 Cryptography (3)

This course covers cryptographic methods ranging from classical to modern ciphers and their cryptanalysis. Topics include classical cryptography, modular arithmetic and number theory concepts relevant to cryptography, modern block and stream ciphers, public key cryptography, hash functions, digital signatures, secret sharing, and steganography. Prerequisite(s): grade of C or better in both I CSI 210, and I CSI 333 or I ECE 233 (formerly I ECE 333).



I CSI 431 Data Mining (3)

A course on data mining (finding patterns in data) algorithms and their application to interesting data types and situations. We cover algorithms that address the five core data mining tasks: prediction, classification, estimation, clustering, and associations. Course projects will involve advanced topics such as algorithm developments for handling large data sets, sequential, spatial, and streaming data. Prerequisite(s): A C or better in MAT 220, MAT 367 or MAT 370, and CSI 311.

3a8082e126
Reply all
Reply to author
Forward
0 new messages