UNDERGRADUATE COURSE DESCRIPTIONS
John Martin, Undergraduate Coordinator john.martin@ndsu.edu
Brian Slator, Head brian.slator@ndsu.edu
Version: March 2008
CSci 114 – Microcomputer Packages (3 cr) General introduction to computer concepts, operating systems, the internet, word processing, spreadsheets, database management and presentation software. Credit awarded only for CSci 114, CSci 116 not both.
CSci 116– Business Use of Computers (4 cr) Exploration of how microcomputers are used in business. Use word processing, spreadsheet, database, graphing and telecommunication applications. Credit awarded only for CSci 114, CSci 116 not both.
CSci 122 – Programming in BASIC (3 cr) Introduction to programming on microcomputers in Visual BASIC. Students will write several programs.
CSci 125 – COBOL Programming (3 cr) Survey of the entire COBOL language and its use in business applications. Students will write several programs.
CSci 126 – FORTRAN Programming (3 cr) Introduction to FORTRAN and its use in scientific programming. Students will write several programs. Prereq: Math 103 or 107
CSci 155 - Immigration (2 cr) Introduction to programming in the current language of CSci 160. For transfer students with CSci 160 or equivalent, in a language different from that used here. Prereq: CSci 160.
CSci 159 – Computer Science Problem Solving (3 cr) Computer based problem solving techniques are introduced in the context of the Internet, including web-site development. Programming concepts, data structures and algorithms, as well as modeling techniques are discussed.
CSci 160 - Computer Science I (4 cr) Introduction to computer science including problem solving algorithm development, and structured programming in a high-level language. Emphasis on design, coding, testing and documentation of programs using accepted standards of style. 3 recitations, 2 one-hour laboratories.
CSci 161 - Computer Science II (4 cr) Advanced concepts in computer science including data structures, algorithm analysis, standard problems such as searching and sorting and memory management issues. 3 recitations, 2 one-hour laboratories. Prereq: CSci 160.
CSci 172 – Intermediate BASIC/Visual BASIC (3 cr) Elements of Visual BASIC for those with previous programming background. Topics include fundamental constructs, Active X controls, file processing, database management, and SQL. Prereq: one semester/experience in any programming language
CSci 212 - Self paced C++ (1 cr) Introduction to the C++ programming language. Students complete exercises and programming assignments at their own pace. Prereq: Programming skill in another language.
CSci 214 - Self paced C ( 1 cr) Introduction to the C programming language. Students complete exercises and programming assignments at their own pace. Prereq: CSci 160.
CSci 222 - Discrete Mathematics (3 cr) Sets, functions, relations, logic, methods of proof, mathematical induction, combinatorics, recurrence relations, generating functions. Prereq: CSci 160.
CSci 227-228 - Computing Fundamentals I, II (3 cr each) Two-semester sequence focused on problem solving and writing computer programs in a modern high-level programming language in a state-of-the-art programming environment. Second semester includes an introduction to the object-oriented programming paradigm. Prereq: for 227: Math 103 or 107; Prereq: for 228: CSci 227.
CSci 275 – Digital Systems I (3 cr) Introduction to number systems, combinatorial circuits and sequential circuits. Prereq: CSci 161.
CSci 277 – Introduction to UNIX (3 cr) This course introduces students to the UNIX operating system environment. Topics include basic UNIX commands, operating system installation and administration, application installation, use of alternative shells, web servers, and system security. Cross-listed with MIS.
CSci 315 - System Analysis and Design (3 cr) Introduction to the front end of the software development life cycle. Students will learn various modern concepts, techniques and tools for analyzing and designing well structured software systems. Prereq: CSci 160.
CSci 316 - System Testing and Maintenance (3 cr) Introduction to the back end of software development life cycle. Students will learn various modern concepts, techniques and tools for testing and maintaining software systems. Prereq: CSci 315.
CSci 335 – [235] Theoretical Computer Science I (3 cr) Models of computation, regular expressions, finite automata, Kleene's Theorem, lexical analysis, context free grammars, pushdown automata, introduction to parsing. Prereq: CSci 161, CSci 222.
CSci 336 – [236] Theoretical Computer Science II (3 cr) Parsing techniques, context-free languages, Turing machines, recursive and recursively enumerable languages, unrestricted grammars, unsolvable decision problems, computability, introduction to computational complexity. Prereq: CSci 335.
CSci 345 - Topics in Personal Computers (3 cr) Exploration of some aspects of personal computers not covered in other courses, varies each time it is offered and may be taken more than once for credit. Prereq: CSci 161.
CSci 366 - Files for Database Systems (3 cr) File organization techniques, design and implementation of database systems. Prereq: CSci 161.
CSci 371 – Web Scripting Languages (3 cr) This course examines Scripting Languages and their applications. Emphasis will be placed on web scripting. A representative set of scripting languages will be covered. Prereq: CSci 122 or equivalent. Cross-listed with MIS.
CSci 372 - Comparative Languages (3 cr) Explanation of the concept and impact of a block structured language. Several languages will be compared with respect to application, suitability, syntax, and semantics. Prereq: CSci 161 or CSci 228
CSci 373 - Assembly Programming (3 cr) Machine language, assembly language and related hardware concepts, assembly language programming, macros and subroutines, system facilities and macros. Prereq: CSci 160.Cross-listed with ECE.
CSci 374 - Computer Organization and Architecture (3 cr) Organization and structure of the major sections of a computer: CPU, memory, and I/O system organization and implementation issues. Prereq: CSci 373. Cross-listed with ECE..
CSci 413/613 – Principals of Software Engineering (3 cr) An introduction to concepts of software engineering. Software Development activities through a project. Lifecycle models, requirements, specification, design, implementation, and testing. Software quality, tools, and techniques. A term paper for graduate students.
Prereq: CSci 161.
CSci 418/618 - Simulation Models (3 cr) Fundamental techniques involved in using a computer to simulate business, social and industrial systems. Includes principles of random variate generation, statistical sampling and design of experiments. Prereq: Stat 367.
CSci 426/626 - Introduction to Artificial Intelligence (3 cr) An introduction to artificial intelligence for undergrads. Basic AI concepts and techniques will be covered. Prereq: CSci 372.
CSci 436/636 – Intelligent Agents (3 cr) Fundamentals of Intelligent Agents technology, agent communication languages, applications, and intelligent agent development. Prereq: CSci 372
CSci 445 – Software Projects Capstone (3 cr) Presentations on the mechanics of working cooperatively as a team doing commercial software development. Students work in teams to deliver realistic work products to local businesses. Course presentations cover teamwork, software development pragmatics, and software documentation. Prereq: CSci 366; Coreq: CSci 489.
CSci 448/648 – Digital Image Processing (3 cr) Introduction to fundamental principles and techniques of digital image processing; image enhancement, image compression, and image analysis. Emphasis on hands-on experience in using software development packages and implementation of various image processing algorithms. Prereq: CSci 372, MATH 166
CSci 453/653 - Linear Programming and Network Flows (3 cr) Linear programming models and applications, primal and dual formulations, computational procedures, introduction to networks, maximum flow and shortest path problems. Prereq: Math 265.
CSci 454/654 - Operations Research (3 cr) Deterministic and probabilistic models of OR: networks and project management, dynamic programming, non‑linear programming, inventory, queuing, reliability, stochastic processes and simulation. Prereq: CSci 453/653, Stat 367.
CSci 458/658 - Microcomputer Graphics (3 cr) Information on the techniques by which computers generate images of 2D and 3D objects. Principles to guide the use of computer graphics to enhance human-computer interaction. Prereq: CSci 372, Math 146 or 165.
CSci 459/659 – Foundations of Computer Networks (3 cr) This is an introduction to fundamental concepts for the design and analysis of broadband networks. Topics include resource allocation, routing, congestion control, medium access, scheduling and multicast. Concepts are applied to state-of-the-art systems and protocols such as current and future internet protocols. Prereq: CSci 214, 474.
CSci 460/660 - Dynamic Programming (3 cr) Basic principles and algorithms of dynamic programming as applied to sequential decision problems in CS and OR. Prereq: Math 161.
CSci 467/667 - Algorithm Analysis (3 cr) The design, correctness, and analysis of algorithms and data structures. Prereq: CSci 161, MATH 166, CSci 222 or MATH 270.
CSci 468/668 - Database Systems Design (3 cr) Overview of the maintenance and manipulation of databases. Includes a large project in C++. Prereq: CSci 366.
CSci 469/669 – Network Security (3 cr) Cryptography and its application to network and operating system security; authentication; email, web, IP and wireless security; firewalls and intrusion detection techniques; security threats and countermeasures. Legal and ethical issues. Prereq: CSci 222, CSci 459/659, C/C++ or JAVA.
CSci 474 - Operating Systems Concepts (3 cr) How operating systems manage the resources of a computer. Topics include processes, concurrency, scheduling, deadlocks, memory allocation, virtual and secondary storage. Prereq: CSci 374.
CSci 475/675 - Operating Systems Design (3 cr) Advanced operating systems topics such as protection, errors, and distributed systems. Case studies of representative operating systems. Students work in small teams to implement their own basic OSs. Prereq: CSci 474.
CSci 476/676 – Computer Forensics (3 cr) This course introduces principles, techniques, tools and practical skills necessary to perform rudimentary investigation of incidents in which computers play a significant or interesting role. Prereq. CSci 474.
CSci 477/677 - Object-Oriented Systems (3 cr) An introduction to the concepts and advantages of object-oriented computer systems. Introduces exercises with at least one such language. Prereq: CSci 372.
CSci 479/679 – Intro to Data Mining (3 cr) Introduction to Data Mining includes basic data mining techniques, querying, spreadsheet data mining, data warehouses, evaluation techniques, knowledge
discovery in databases, examples and a survey of advanced techniques. Prereq: A basic database course
(e.g. CSci 366, 468, 668 or 765) or consent of instructor.
CSci 488/688 - Human-Computer Interaction (3 cr) Survey of the methodologies and alternatives used in developing and evaluating human computer interfaces. Prereq: CSci 372.
CSci 489/689 - Social Implications of Computers (3 cr) Presentation and discussion of several ethical and social issues which have arisen from the introduction of the computer including copy protected software, and liability for computer software errors. Prereq: CSci 372
