Loyola University Chicago
[Home][Search][Site Index][Calendar][Contact Us][Directories]Chicago's Jesuit University

Undergraduate Studies Catalog

COMPUTER SCIENCE (COMP)

Notes: (1) COMP 120 is not part of the core curriculum. (2) A student who earns a grade below "C" in COMP 170 or 271 cannot count this course as a prerequisite for a subsequent computer science course.

101. Exploring the Internet. (1)
This one-credit course offers non-computer science majors an introduction to the use of the vast resources available on the Internet. The course will be taught in a laboratory environment with practical hands-on instruction. Most of the material in this course is included in COMP 120, so a student will not be permitted to take both for credit. The scope of COMP 120 is much broader; there are many students who wish to acquire only Internet skills without examining other uses of computers.

102. Web Site Design. (1)
An introduction to the basic components and tools used in developing pages for the World Wide Web. Topics will include HTML, HTML Standards and validation, Cascading Style Sheets (CSS), and scripting. Tools appropriate for each of these will be discussed. Other topics may include CGI programming and graphics editors. The course is taught in a laboratory environment with hands-on instruction.

120. Introduction to Computer Applications. (MATH 149)
Prerequisite: Math Placement Test or Math 099.
This course, intended for non-science majors, offers a hands-on introduction to the development, functions, and applications of computers. Topics include e-mail, exploring the Internet, spread-sheets, word-processing, database, desktop software, statistical packages, and programming. Uses of computing technology in business and the arts. Ethical, security, and privacy issues as they relate to computers. Weekly lab assignments.

125. Introductory Programming.
Prerequisite: Math Placement Test or MATH 100 (with grade of "C" or better).
An elementary introduction to programming using a language such as Visual Basic. Topics include variables, formatted input/output, arrays, looping, conditional execution, subroutines, functions, computer graphics, animation. Applications to other disciplines are stressed.

150. Introduction to Computer Science.
Prerequisite: Math Placement Test or MATH 100 (with grade of "C" or better).
An introduction to computer science providing a broad survey of the discipline while emphasizing the computerís role as a tool for describing, organizing, and manipulating information. Topics to include machine architecture, software, data organization, and the potential and limitation of machines. Serves as a terminal course for students who want a one course introduction to the field, as well as a preliminary course to upper level computer science offerings. Note: this is NOT a programming class and it may be taken concurrently with COMP 125 or 170.

170. Structured Programming.
Prerequisite: Math Placement Test or MATH 117 (with grade of "C" or better).
An introduction to the computer science major, covering basic concepts using an object-oriented programming language such as Java. The course addresses the following questions: What is an algorithm? How does one write a computer program? How does one convert an algorithm into a computer program? How does one judge a program? Topics include: variables, data types, input/output, repetition, choice, classes/objects, methods, arrays and recursion. This course is programming intensive. A weekly lab component is required.

211. Discrete Structures.
Prerequisites: COMP 170 and MATH 118.
Mathematical foundations of computer science. Topics include: complexity of algorithms; modular arithmetic; induction and proof techniques; graph theory; combinatorics; Boolean algebra and switching systems (including Karnaugh maps and the Quine-McCluskey method); symbolic logic and logic circuits; and an introduction to automata and formal languages.

219. Introduction to UNIX. (1)
Prerequisite: COMP 170.
An introduction to the UNIX operating system. Topics include files and directories, electronic mail, security, advanced file systems, network utilities, network file sharing, text utilities, shell programming, UNIX internals, UNIX system administration, the X windowing system, and systems programming. Programming assignments involve the UNIX shell script language.

225. Introduction to Web Programming.
Corequisite: COMP 271.
This course offers an introduction to Web programming. Topics include: Web forms and other CGI programs using Perl and C++; Java Scripting and client/server Java Applets. Security issues will also be examined.

227. Client/Server Web Programming.
Prerequisite: COMP 225; Corequisite: COMP 272.
This course is a continuation of COMP 225, with a change of emphasis from CGI programming to Java Servlets. The Client/Server model will be studied since Java servlets are able to communicate more easily with Java Applets. Additional topics include: Cookies, RMI, simple concurrency, Java Scripting, and security issues. Optional topics include: Database connectivity, Sockets, Object-Oriented Perl, PHP and XML.

251. Introduction to Database Systems.
Prerequisite: COMP 170.
Design and implementation of a large database. Hardware and software considerations. Relational, hierarchical, and network models. Object-oriented databases. Data independence, security, and integrity. Examination of databases such as Oracle and Microsoft Access.

260. Digital Logic and Computer Design.
Prerequisite: COMP 170. An introduction to digital logic and computer design. Design of a simple computer with a complete instruction set starting from the gate level and extending through the Register Transfer Language level. Development of an assembly language for this computer. Additional topics chosen from: microprogrammed control, advanced ALUís, RISC computers.

266. Digital Electronics Laboratory.
(PHYS 266) Prerequisite: PHYS 112 or 114 or permission.
Lecture and laboratory. Logic devices, oscillators and timers, microprocessor components, machine language and digital/analog conversion. Special emphasis upon individual components of microprocessor systems.

271. Structured Programming and Data Structures.
Prerequisite: COMP 170.
This continuation of COMP 170 introduces the concepts of data abstraction and data structure, including stacks, queues, lists, sets, and trees. The issues of implementing a data structure in a language such as Java are examined using classes, arrays, and linked structures. Sorting and searching techniques are analyzed. The concepts of correctness and efficiency of algorithms are developed. Time/space comparisons of iterative algorithms with recursive algorithms are made. The course includes several major programming projects. A weekly lab component is required.

272. Data Abstraction and Object-Oriented Programming.
Prerequisite: COMP 271.
An examination of object-oriented programming and design in C++ and Java. Classes and objects. Composition, inheritance, and parametrization. Dynamic versus static binding. Applications such as graphical user interface. This course is programming intensive.

277. COBOL and Advanced Data Management.
Prerequisite: COMP 271.
Programming in COBOL, including tables, searches, sorts, and character string manipulation. File organization and management. Sequential and non-sequential file structures, including relative files, direct files, ISAM and VSAM.

281. Problem-Solving Strategies in Computer Science. (1)
Prerequisite: COMP 271.
This seminar offers students an opportunity to explore program development and design as part of a small team of programmers. Problems are selected from local and national A.C.M. programming contests and other sources. May be repeated for credit.

288. Topics in Computer Science. (1-3)
Course title and content vary; prerequisites are established by the instructor. May be repeated for credit.

309. Numerical Methods. (MATH 309)

316. Ethics and Computers. (1)
Prerequisites: COMP 170; PHIL 120.
This seminar will explore a variety of ethical and legal issues facing those who use or program computers. Issues can be divided broadly into professional ethics, dealing with the ethical responsibilities of the programmer, and social issues, dealing with concerns we all have as citizens.

330. Software Engineering.
Prerequisite: COMP 272.
Using an object-oriented language such as C++ or Java, the student (working in a small team) will learn to plan, design, implement, and test a large software project.

331. Cryptography. (MATH 331)
Prerequisite: COMP 363 or MATH 313 or MATH 322.
This course introduces the formal foundations of cryptography and also investigates some well known standards and protocols. The intended audience is senior undergraduates and beginning graduate students. Topics to be covered in this course include: information-theoretic security, private key encryption, DES, public key encryption, background on modular arithmetic, RSA, hashing and message authentication codes (MACs), digital signatures, DSS, key distribution and management, PGP, network security, Fiat-Shamir protocol, kerberos.

332. Design Patterns and Object-Oriented Design.
Prerequisite: COMP 272.
This course is a project-intensive course in software engineering. It takes students through the entire software life cycle by involving them in a semester long team project. The course emphasizes the use of design patterns and object-oriented design methods such as Object Modeling Technique (OMT) throughout the project.

333. Formal Methods in Software Engineering.
Prerequisite: COMP 272.
This course covers formal methods used in the development of software. It covers languages such as Z, for specifying abstract data types, and temporal logic, for specifying behavior of concurrent systems.

337. Java Programming and Concurrency.
Prerequisite: COMP 272.
This course explores component-based programming frameworks for concurrent programming. Process algebras, specification and testing are used as tools in the engineering of concurrent systems; threads are employed in the implementation of such systems. Coursework includes several substantial programming projects (in a language such as Java) involving applications of concurrency and event driven programming such as graphical user interfaces, web-based services using Hypertext Transfer Protocol (HTTP) and distributed services using Remote Method Invocation (RMI).

338. Interactive Services Programming.
Prerequisite: COMP 337
This course introduces Sisl, a domain-specific language for service logics of interactive services. The student then learns how to use the Java Servlet API to connect the service logic with concrete interfaces based on applets, HTML forms, and automatic speech recognition (ASR) using JSAPI or VoxML.

343. Introduction to Computer Networks.
Prerequisite: COMP 272.
This course surveys the various levels of a packet-switched computer network, using the TCP/IP protocol suite as the primary model. Other network protocol stacks (e.g., Novell) may also be considered as time permits. At the Physical and Data Link Layers, various protocols such as Ethernet and Token Ring are compared, and their implications for network topology are considered. At the Network Layer, a wide variety of routing protocols and name resolution protocols are studied. At the Transport Layer, students are introduced to the various methods for building end-to-end reliability on top of less reliable lower layers. Finally, at the Application Layer a variety of standard protocols such as telnet, ftp, and electronic mail are examined, together with the related issues of security and authentication. Some programming in the C language is required.

346. Introduction to Telecommunications.
Prerequisite: COMP 374.
This course introduces the fundamental concepts of telecommunication networks. Engineering principles of telephone, computer and integrated digital networks. Topics include: telephone and data networks overview; OSI layers; data link protocol; flow and congestion control, routing; local area networks (Ethernet, Token Ring and FDDI); transport layer; and high-speed networks.

350. Introduction to Microprocessors.
Prerequisites: COMP 260, 271. This course is an introduction to microprocessor architecture, emphasizing the Intel 80x86 family. Topics include: memory addressing, instruction sets, interrupt structure, operating system interfacing, and high-level language interfacing.

353. Database Programming.
Prerequisites: COMP 251, 272.
This course covers the fundamentals of database application development using C++, C, or Java by accessing a transaction-oriented database server. A commercial database environment such as Oracle is used. Additional topics may include enabling access to database via the web, and administering large databases.

356. Computer Principles of Modeling and Simulation. (STAT 356)

360. Computer Organization.
Prerequisite: COMP 260.

A continuation of COMP 260, this course presents advanced topics in computer architecture such as arithmetic and instruction pipelining, vector and array computers, peripheral devices and current I/O techniques, hierarchical memory organization, field programmable gate arrays (FPGAís) and reconfigurable computers.

363. Design and Analysis of Computer Algorithms.
Prerequisites: COMP 211, 271.
Techniques for the description and analysis of computer algorithms. Correctness, average and worst case analysis, space complexity, and asymptotic growth analysis of functions. Algorithms for searching, selection and sorting. Graph algorithms. Divide and conquer, greedy, and dynamic programming paradigms. Models of computation, the classes P and NP, and the complexity hierarchy.

364. Supercomputing.
Prerequisite: COMP 271.
Introduction to parallel computing and parallel programming. Models of parallel computation, parallel computer performance measures, parallel computer architectures, design and analysis of parallel algorithms, parallelizing sequential programs.

366. Microcomputer Design and Interfacing. (PHYS 366)
Prerequisite: COMP 260 or PHYS 266.
Lecture and laboratory work. Microprocessor logic, instruction, and clocked sequential circuits; memory devices; data acquisition, manipulation and transfer circuitry; machine and assembly languages; microprocessor support devices, and computer interfaces.

372. Programming Languages.
Prerequisite: COMP 272.
Study of the principles underlying the design and implementation of commonly used programming languages. Programming in a variety of languages such as C++, Java, Lisp, and ML may be required.

373. Object-Oriented Programming.
Prerequisite: COMP 272.
Advanced treatment of the main constituents of the object-oriented methodology introduced in COMP 272: data abstraction, inheritance, and polymorphism. Comparison of several object-oriented languages, such as C++, Java and Smalltalk. Paradigms and implementation techniques associated with object-oriented languages. Advanced topics, such as prototyping, delegation, and concurrent object-oriented programming. The course includes substantial programming projects involving object-oriented design and application programming.

374. Introduction to Operating Systems.
Prerequisite: COMP 272.
Introduction to the basic concepts and components of a multi-tasking operating system. Topics include processes, scheduling, resource management, I/O and file-systems, virtual memory, synchronization semaphores, deadlocks, race conditions, context switching, system calls, security, distributed systems and networks. Examination of an existing operating system.

376. Formal Languages and Automata.
Prerequisite: COMP 211 or MATH 313.
Introduction to formal language theory. Finite-state machines and regular languages. Stack machines and context-free languages. Turing machines and computability. Undecidability and the Halting Problem.

378. Artificial Intelligence.
Prerequisite: COMP 271.
Concepts of problem representation and search, knowledge representation and reasoning. Selected topics may include game playing, theorem proving, natural language processing, machine learning, connectionist models, expert systems, robotics, pattern recognition, machine vision, and neural networks.

380. Introduction to Computer Graphics.
Prerequisite: COMP 271.
An introduction to modern computer graphics with an emphasis on rendering 3-dimensional scenes. Topics include modeling, viewing, hidden surface removal, lighting and illumination, and rasterization. The student will obtain practical experience in graphics applications programming using an industry standard API such as GKS, OpenGL, or PHIGS.

382. Introduction to Compilers.
Prerequisites: COMP 260, 272.
This course examines the design of compilers. Tools and related topics include context-free grammars, parsing, syntax-directed translation, lexical analysis, and code generation. Students will write a compiler for a small language.

388. Topics in Computer Science. (1-3)
Course title and content vary; prerequisites are established by the instructor. May be repeated for credit.

390. Computer Science Project.
Prerequisite: permission of chair.
Research and preparation for a project supervised by a faculty member.

391. Internship in Computer Science. (1-3)
Prerequisites: COMP 272 and approval of the internship director; junior/ senior majors. An opportunity to obtain experience in software development, design, or related activities in computer science in a professional setting. Placement requires approval of the internship coordinator and acceptance by an employer. Students will submit periodic written reports, possibly including a project, based upon their internship activities and results. The number and frequency of reports must be approved in advance by the internship director. (This course may not be used to satisfy the 3-credit elective requirement in the computer science or math and CS majors.)

398. Independent Study. (1-3)
Prerequisite: permission of chair.
Independent study of selected topics in computer science under the supervision of a faculty member.

399H. Honors Tutorial. (1-3)
Prerequisite: permission of chair.
Independent study of selected topics in computer science for students in the honors program.

Back to Undergraduate Studies Main



Back to Top

Loyola Logo