UEEN1043 Object-Oriented Concept and Programming Techniques 2019
Assignment #2
In this assignment, you are asked to demonstrate a program which uses the concept of
inheritance and polymorphism in OOP to automatically find all the duplicated titles in the UTAR
li
ary collection.
The outcome will be one single CSV file named as duplication.csv. The format of the CSV file
is described in duplication_example.csv. Each row in the CSV file contains all the information
of the same TITLEs from different databases DBs; i.e. the information are the TITLE, DB,
ISSN, e-ISSN, ISBN, and e-ISBN numbers.
The input file is li
ary-titles.xlsx. Each row of the input file contains the related information of
one single title. An ISSN or e-ISSN can have 5 to 8 digits; some are separated by ‘-’ while some
are not. An ISBN or e-ISBN is either 10 digits or 13 digits; some are separated by ‘-’ while some
are not. Hence, you need to reset those which are not conforming to the aforementioned digit
formats to null, instead of not dropping, before comparison.
Conditions for a duplication:
1) Exact match of all ISSN, e-ISSN, ISBN, and e-ISBN as well as the TITLE name
2) Matches must come from different DB.
3) Only output one record for the duplicated titles in duplication.csv; see below:
All of the scenarios above are considered the same description of duplication and your
output should use scenario 3 where unqiue duplicates are sorted alphabetically by DB.
Marking scheme: (Total 30 marks)
1. Use a flow chart to explain how you plan to solve the problem. (3 marks)
2. Demonstrate modular programming technique. (3 marks)
3. Show effective use of list comprehension or dictionary comprehension. (2 marks)
4. Show improved code readability by using map() or apply() or applymap(). (3 marks)
5. Show effective use of pandas and numpy modules. (3 marks)
6. Able to apply masking technique to select the desired rows or columns. (3 marks)
7. Show effective use of the inheritance and polymorphism concepts in OOP to avoid
nested if-then-else statements if your solution can relax the condition 1) to accept a row
whose ISSN, e-ISSN, ISBN, and e-ISBN are all nulls but its TITLE matches that in the
duplication list produced using the condition XXXXXXXXXXmarks)
UNIVERSITI TUNKU ABDUL RAHMAN page 1
Scenario 1 TITLE DB ISSN ... TITLE DB ISSN ... TITLE DB ISSN ...
ttle1 A XXXXXXXXXX … ttle1 B XXXXXXXXXX … ttle1 A XXXXXXXXXX…
Scenario 2 TITLE DB ISSN ... TITLE DB ISSN ...
ttle1 B XXXXXXXXXX … ttle1 A XXXXXXXXXX …
Scenario 3 TITLE DB ISSN ... TITLE DB ISSN ...
ttle1 A XXXXXXXXXX … ttle1 B XXXXXXXXXX …
UEEN1043 Object-Oriented Concept and Programming Techniques 2019
8. The solution does not have any nested loops within the main or any functions. (2 marks)
9. The Solution can run to completion without e
or messages. (2 marks, not a dummy run)
10. Output filename and its contents must conform with the given formats. (2 marks)
11. With clear and sufficient comments in the program to explain your design. (2 mark)
You are not allowed to change the format of any inputs for your convenience as the
marking will feed different contents using the same input format to your solution. Also, you
should not assume any other inputs from the keyboard or files unless otherwise specified
later.
Submission
ï‚· The deadline is 6pm on 19th April 2019 (Friday)
ï‚· NO LATE submission is accepted.
ï‚· One submission for one group is sufficient.
ï‚· Do NOT submit input files.
ï‚· Only submit your solution in Python by emailing them to XXXXXXXXXX with email
subject equal to
â—¦ UEEN XXXXXXXXXXA2 G[group number]
â—¦ e.g. UEEN XXXXXXXXXXA2 G[13] for group #13.
ï‚· Your Python file should follow the naming format below:
â—¦ G[group number]_A2.py
â—¦ e.g. G[13]_A2.py for group #13.
ï‚· Failure to conform to the naming format above will result in 10% deduction of your
total mark.
UNIVERSITI TUNKU ABDUL RAHMAN page 2
mailto: XXXXXXXXXX
All Campus
DB TITLE ISSN e-ISSN ISBN e-ISBN
M ACM Computing Surveys XXXXXXXXXX XXXXXXXXXX
M ACM Journal of Computer Documentation XXXXXXXXXX XXXXXXXXXX
M ACM Journal on Emerging Technologies in Computing Systems XXXXXXXXXX XXXXXXXXXX
M Journal of Data and Information Quality XXXXXXXXXX XXXXXXXXXX
M Journal of Experimental Algorithmics XXXXXXXXXX XXXXXXXXXX
M Journal of the ACM XXXXXXXXXX 1557-735X
M Journal on Computing and Cultural Heritage XXXXXXXXXX XXXXXXXXXX
M Journal on Educational Resources in Computing XXXXXXXXXX XXXXXXXXXX
M Proceedings of the ACM on Computer Graphics and Interactive Techniques XXXXXXXXXX
M Proceedings of the ACM on Human-Computer Interaction XXXXXXXXXX
M Proceedings of the ACM on Interactive, Mobile, Wearable and Ubiquitous Technologies XXXXXXXXXX
M Proceedings of the ACM on Measurement and Analysis of Computing Systems XXXXXXXXXX
M Proceedings of the ACM on Programming Languages XXXXXXXXXX
M ACM Letters on Programming Languages and Systems XXXXXXXXXX XXXXXXXXXX
M ACM Transactions on Accessible Computing XXXXXXXXXX XXXXXXXXXX
M ACM Transactions on Algorithms XXXXXXXXXX XXXXXXXXXX
M ACM Transactions on Applied Perception XXXXXXXXXX XXXXXXXXXX
M ACM Transactions on Architecture and Code Optimization XXXXXXXXXX XXXXXXXXXX
M ACM Transactions on Asian Language Information Processing XXXXXXXXXX XXXXXXXXXX
M ACM Transactions on Asian and Low-Resource Language Information Processing XXXXXXXXXX XXXXXXXXXX
M ACM Transactions on Autonomous and Adaptive Systems XXXXXXXXXX XXXXXXXXXX
M ACM Transactions on Computation Theory XXXXXXXXXX XXXXXXXXXX
M ACM Transactions on Computational Logic XXXXXXXXXX 1557-945X
M ACM Transactions on Computer Systems XXXXXXXXXX XXXXXXXXXX
M ACM Transactions on Computer-Human Interaction XXXXXXXXXX XXXXXXXXXX
M ACM Transactions on Computing Education XXXXXXXXXX
M ACM Transactions on Cyber-Physical Systems 2378-962X XXXXXXXXXX
M ACM Transactions on Database Systems XXXXXXXXXX XXXXXXXXXX
M ACM Transactions on Design Automation of Electronic Systems XXXXXXXXXX XXXXXXXXXX
M ACM Transactions on Economics and Computation XXXXXXXXXX XXXXXXXXXX
M ACM Transactions on Embedded Computing Systems XXXXXXXXXX XXXXXXXXXX
M ACM Transactions on Graphics XXXXXXXXXX XXXXXXXXXX
M ACM Transactions on Human-Robot Interaction XXXXXXXXXX
M ACM Transactions on Information Systems XXXXXXXXXX XXXXXXXXXX
M ACM Transactions on Information and System Security XXXXXXXXXX XXXXXXXXXX
M ACM Transactions on Intelligent Systems and Technology XXXXXXXXXX XXXXXXXXXX
M ACM Transactions on Interactive Intelligent Systems XXXXXXXXXX XXXXXXXXXX
M ACM Transactions on Internet Technology XXXXXXXXXX XXXXXXXXXX
M ACM Transactions on Knowledge Discovery from Data XXXXXXXXXX 1556-472X
M ACM Transactions on Management Information Systems 2158-656X XXXXXXXXXX
M ACM Transactions on Mathematical Software XXXXXXXXXX XXXXXXXXXX
M ACM Transactions on Modeling and Computer Simulation XXXXXXXXXX XXXXXXXXXX
M ACM Transactions on Modeling and Performance Evaluation of Computing Systems XXXXXXXXXX XXXXXXXXXX
M ACM Transactions on Multimedia Computing, Communications, and Applications XXXXXXXXXX XXXXXXXXXX
M ACM Transactions on Parallel Computing XXXXXXXXXX XXXXXXXXXX
M ACM Transactions on Privacy and Security XXXXXXXXXX XXXXXXXXXX
M ACM Transactions on Programming Languages and Systems XXXXXXXXXX XXXXXXXXXX
M ACM Transactions on Reconfigurable Technology and Systems XXXXXXXXXX XXXXXXXXXX
M ACM Transactions on Sensor Networks XXXXXXXXXX XXXXXXXXXX
M ACM Transactions on Social Computing XXXXXXXXXX XXXXXXXXXX
M ACM Transactions on Software Engineering and Methodology 1049-331X XXXXXXXXXX
M ACM Transactions on Spatial Algorithms and Systems XXXXXXXXXX XXXXXXXXXX
M ACM Transactions on Speech and Language Processing XXXXXXXXXX XXXXXXXXXX
M ACM Transactions on Storage XXXXXXXXXX XXXXXXXXXX
M ACM Transactions on the Web XXXXXXXXXX 1559-114X
M IEEE/ACM Transactions on Audio, Speech and Language Processing XXXXXXXXXX XXXXXXXXXX
M IEEE/ACM Transactions on Computational Biology and Bioinformatics XXXXXXXXXX
M IEEE/ACM Transactions on Networking XXXXXXXXXX
M ACM Inroads XXXXXXXXXX XXXXXXXXXX
M Communications of the ACM XXXXXXXXXX XXXXXXXXXX
M Computers in Entertainment XXXXXXXXXX
M Crossroads XXXXXXXXXX XXXXXXXXXX
M Interactions XXXXXXXXXX XXXXXXXXXX
M Queue XXXXXXXXXX XXXXXXXXXX
M StandardView XXXXXXXXXX XXXXXXXXXX
M Ubiquity XXXXXXXXXX
M XRDS: Crossroads, The ACM Magazine for Students XXXXXXXXXX XXXXXXXXXX
M eLearn 1535-394X
M intelligence XXXXXXXXXX XXXXXXXXXX
M netWorker XXXXXXXXXX XXXXXXXXXX
M ALGOL Bulletin XXXXXXXXXX
M Computational Linguistics XXXXXXXXXX
M Evolutionary Computation XXXXXXXXXX XXXXXXXXXX
M Journal of Computing Sciences in Colleges XXXXXXXXXX XXXXXXXXXX
M Journal of Usability Studies XXXXXXXXXX
M Linux Journal XXXXXXXXXX
M Personal and Ubiquitous Computing XXXXXXXXXX
M Proceedings of the VLDB Endowment XXXXXXXXXX
M The Journal of Machine Learning Research XXXXXXXXXX XXXXXXXXXX
M The VLDB Journal — The International Journal on Very Large Data Bases XXXXXXXXXX
M 3C ON-LINE XXXXXXXXXX
M ACM Communications in Computer Alge
a XXXXXXXXXX
M ACM Lisp Bulletin
M ACM SIGACCESS Accessibility and Computing XXXXXXXXXX XXXXXXXXXX
M ACM SIGACT News XXXXXXXXXX
M ACM SIGAPL APL Quote Quad XXXXXXXXXX
M ACM SIGAPP Applied Computing Review XXXXXXXXXX XXXXXXXXXX
M ACM SIGARCH Computer Architecture News XXXXXXXXXX
M ACM SIGART Bulletin XXXXXXXXXX
M ACM SIGAda Ada Letters XXXXXXXXXX
M ACM SIGBED Review XXXXXXXXXX
M ACM SIGBIO Newsletter XXXXXXXXXX
M ACM SIGBioinformatics Record XXXXXXXXXX XXXXXXXXXX
M ACM SIGCAPH Computers and the Physically Handicapped XXXXXXXXXX
M ACM SIGCAS Computers and Society XXXXXXXXXX
M ACM SIGCHI Bulletin XXXXXXXXXX
M ACM SIGCHI Bulletin - a supplement to
interactions
i> XXXXXXXXXX
M ACM SIGCOMM Computer Communication Review XXXXXXXXXX
M ACM SIGCPR Computer Personnel XXXXXXXXXX
M ACM SIGCSE Bulletin XXXXXXXXXX
M ACM SIGCSIM Installation Management Review XXXXXXXXXX
M ACM SIGCUE Outlook XXXXXXXXXX
M ACM SIGDA Newsletter XXXXXXXXXX
M ACM SIGDOC Asterisk Journal of Computer Documentation XXXXXXXXXX
M ACM SIGEVOlution XXXXXXXXXX
M ACM SIGFORTH Newsletter XXXXXXXXXX
M ACM SIGGRAPH Computer Graphics XXXXXXXXXX
M ACM SIGGROUP Bulletin XXXXXXXXXX 2372-739X
M ACM SIGHIT Record XXXXXXXXXX
M ACM SIGHPC Connect 2168-135X
M ACM SIGICE Bulletin XXXXXXXXXX
M ACM SIGIR Forum XXXXXXXXXX
M ACM SIGITE Newsletter XXXXXXXXXX XXXXXXXXXX
M ACM SIGITE Research in IT XXXXXXXXXX
M ACM SIGKDD Explorations Newsletter XXXXXXXXXX XXXXXXXXXX
M ACM SIGLASH Newsletter 0036-147X XXXXXXXXXX
M ACM SIGLOG News XXXXXXXXXX
M ACM SIGMAP Bulletin XXXXXXXXXX XXXXXXXXXX
M ACM SIGMETRICS Performance Evaluation Review XXXXXXXXXX
M ACM SIGMICRO Newsletter 1050-916X
M ACM SIGMINI Newsletter 0163-576X
M ACM SIGMIS Database: the DATABASE for Advances in Information Systems XXXXXXXXXX XXXXXXXXXX
M ACM SIGMOBILE Mobile Computing and Communications Review XXXXXXXXXX XXXXXXXXXX
M ACM SIGMOD Record XXXXXXXXXX
M ACM SIGMultimedia Records XXXXXXXXXX
M ACM SIGNUM Newsletter XXXXXXXXXX
M ACM SIGOA Newsletter 0737-819X
M ACM SIGOIS Bulletin XXXXXXXXXX
M ACM SIGOPS Operating Systems Review XXXXXXXXXX
M ACM SIGPC Notes XXXXXXXXXX
M ACM SIGPLAN Fortran Forum XXXXXXXXXX XXXXXXXXXX
M ACM SIGPLAN Lisp Pointers XXXXXXXXXX
M ACM SIGPLAN Notices XXXXXXXXXX XXXXXXXXXX
M ACM SIGPLAN OOPS Messenger XXXXXXXXXX
M ACM SIGSAC Review 0277-920X
M ACM SIGSAM Bulletin XXXXXXXXXX
M ACM SIGSIM Simulation Digest XXXXXXXXXX
M ACM SIGSMALL Newsletter 0272-720X
M ACM SIGSMALL/PC Notes XXXXXXXXXX
M ACM SIGSOC Bulletin XXXXXXXXXX
M ACM SIGSOFT Software Engineering Notes XXXXXXXXXX
M ACM SIGUCCS Newsletter XXXXXXXXXX
M ACM SIGUCCS plugged in XXXXXXXXXX
M ACM SIGWEB Newsletter XXXXXXXXXX XXXXXXXXXX
M ACM SIGecom Exchanges XXXXXXXXXX
M AI Matters XXXXXXXXXX
M Communication Design Quarterly Review XXXXXXXXXX XXXXXXXXXX
M GetMobile: Mobile Computing and Communications XXXXXXXXXX XXXXXXXXXX
M SIGSPATIAL Special XXXXXXXXXX
M 3DOR: 3D Object Retrieval
M 3DVP: 3D Video Processing
M A-MOST: Advances in Model-Based Testing
M A2CWiC: Amrita ACM-W Cele
ation on Women in Computing in India
M AAA-IDEA: Advanced Architectures and Algorithms for Internet Delivery and Applications
M AADEBUG: Automated analysis-driven debugging
M AAMAS: Autonomous Agents and Multiagent Systems
M ACDC: Automated Control for Datacenters and Clouds
M ACET: Advances in Computer Entertainment Technology
M ACISNR: Applications of Computer and Information Sciences to Nature Research
M ACL2: ACL2 Theorem Prover and its Applications
M ACM DEV: Computing for Development
M ACM POLICY: ACM POLICY
M ACM SE: Annual Southeast Regional Conference
M ACM-BCS: ACM-BCS
M ACM: ACM Annual Conference/Annual Meeting
M ACPIS: Aspects, Components, and Patterns for Infrastructure Software
M ACSAC: Annual Computer Security Applications Conference
M ACoM: Assessment of Contemporary Modularization Techniques
M ADAMUS: Adaptive and Dependable Mobile Ubiquitous Systems
M ADKDD: Data Mining and Audience Intelligence for Advertising
M ADPUC: Advanced Data Processing in Ubiquitous Computing
M AFFINE: Affective-Aware Virtual Agents and Social Robots
M AFIPS: AFIPS
M AFM: Automated Formal Methods
M AFRIGRAPH: Computer Graphics, Virtual Reality, Visualisation and Interaction in Africa
M AGENTS: Autonomous Agents
M AH: Augmented Human
M AIEE-IRE: AIEE-IRE
M AIEMPro: Automated Information Extraction in Media Production
M AIGC: Artificial Intelligence in Grid Computing
M AINTEC: Asian Conference on Internet Engineering
M AIPACa: Applications of Private and Anonymous Communications
M AIRS: Asia Information Retrieval Symposium
M AIRWeb: Adversarial Information Retrieval on the We
M AISC/MKM/Calculemus: AISC/MKM/Calculemus Conference on Intelligent Computer Mathematics
M AISec: Artificial Intelligence and Security
M ALICE: Alice Symposium
M AM: Audio Mostly
M AMC: Ambient Media Computing
M AMCMM: Audio and Music Computing Multimedia
M ANCS: Architectures for Networking and Communications Systems
M AND: Analytics for Noisy Unstructured Text Data
M ANNA: Analysis of Neural Network Applications
M ANSS: Annual Simulation Symposium
M AOM: Aspect-Oriented Modeling
M AOMD: Aspect Oriented Middleware Development
M APGV: Applied Perception in Graphics and Visualization
M APL: APL
M APLWACA: Analysis and Programming Languages for Web Applications and Cloud Applications
M APOS: Scrutinizing Agile Practices
M APS: Adaptive, Personalization & the Semantic We
M APSys: Asia-Pacific Workshop on Systems
M AREA: Analysis and Retrieval of Events
M ARM: Adaptive and Reflective MIddleware
M ARTEMIS: Analysis and Retrieval of Tracked Events and Motion in Imagery Streams
M ASE: Automated Software Engineering
M ASIA CCS: Information, Computer and Communications Security
M ASIA-PEPM: Partial Evaluation and Semantics-Based Program Manipulation
M ASID: Architectural and System Support for Improving Software Dependability
M ASPDAC: Asia and South Pacific Design Automation Conference
M ASPLOS: Architectural Support for Programming Languages and Operating Systems
M AST: Automation of Software Test
M AUIC: User Interface
M AUPC: Agent-Oriented Software Engineering Challenges for Ubiquitous and Pervasive Computing
M AUS-CE: Australasian Conference on Computing Education
M AVI: Advanced Visual Interfaces
M AVSTP2P: Advanced video streaming techniques for peer-to-peer